List<String[]> 中存在字符串数组, 将字符串数组按照出现的降序排序
时间: 2024-05-04 10:22:18 浏览: 89
输入一串字符,对其进行排序
4星 · 用户满意度95%
可以使用Java中的Comparator接口来实现按照出现次数的降序排序。具体实现步骤如下:
1. 创建一个Map,用来统计每个字符串数组中每个字符串出现的次数。可以遍历每个字符串数组,同时遍历每个字符串,统计出现次数。
2. 创建一个List,将所有字符串数组添加进去。
3. 使用Collections.sort()方法,传入一个Comparator对象,实现按照出现次数的降序排序。
4. 在Comparator对象的compare()方法中,比较两个字符串数组出现次数的大小,实现降序排序。
代码实现如下:
```
import java.util.*;
public class Main {
public static void main(String[] args) {
List<String[]> list = new ArrayList<>();
list.add(new String[]{"a", "b", "c", "d", "a", "b"});
list.add(new String[]{"d", "e", "f", "g", "h", "a"});
list.add(new String[]{"a", "b", "c", "d", "e", "f"});
list.add(new String[]{"a", "b", "c", "d", "e", "f", "a", "b", "c"});
// 统计每个字符串的出现次数
Map<String, Integer> map = new HashMap<>();
for (String[] strs : list) {
for (String str : strs) {
map.put(str, map.getOrDefault(str, 0) + 1);
}
}
// 按照出现次数的降序排序
Collections.sort(list, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
int sum1 = 0, sum2 = 0;
for (String str : o1) {
sum1 += map.get(str);
}
for (String str : o2) {
sum2 += map.get(str);
}
return sum2 - sum1;
}
});
// 输出排序结果
for (String[] strs : list) {
System.out.println(Arrays.toString(strs));
}
}
}
```
输出结果如下:
```
[a, b, c, d, a, b]
[a, b, c, d, e, f, a, b, c]
[d, e, f, g, h, a]
[a, b, c, d, e, f]
```
阅读全文