📅  最后修改于: 2023-12-03 15:40:28.710000             🧑  作者: Mango
在实际的开发中,有时需要根据字符串出现的频率来对字符串数组进行排序,该需求可以通过以下步骤实现:
以下为具体实现代码:
import java.util.*;
public class FrequencySort {
public static void main(String[] args) {
String[] strs = {"apple", "banana", "orange", "banana", "orange", "orange"};
List<String> result = frequencySort(strs);
System.out.println(result);
}
public static List<String> frequencySort(String[] strs) {
// 统计每个字符串出现的次数
Map<String, Integer> frequencyMap = new HashMap<>();
for (String str : strs) {
frequencyMap.put(str, frequencyMap.getOrDefault(str, 0) + 1);
}
// 将哈希表中的元素转为List并排序
List<Map.Entry<String, Integer>> entryList = new ArrayList<>(frequencyMap.entrySet());
entryList.sort((o1, o2) -> o2.getValue() - o1.getValue());
// 遍历排好序的List,将每个元素按出现次数输出
List<String> result = new ArrayList<>();
for (Map.Entry<String, Integer> entry : entryList) {
int frequency = entry.getValue();
String str = entry.getKey();
for (int i = 0; i < frequency; i++) {
result.add(str);
}
}
return result;
}
}
以上代码中,我们使用了一个哈希表来统计每个字符串出现的次数,并将其转为了List并排序,最后遍历排好序的List按出现次数输出了每个字符串。
本文介绍了根据频率对字符串数组进行排序的方法,具体实现可参考以上代码,需要注意的是,在统计每个字符串出现次数时,需要使用哈希表,并且在转为List并排序时,可以使用Sort的Lambda写法进行简化。