java 一个list<String>存了一万条数据 如何筛选出A开头的出现次数最多的前一百
时间: 2023-12-14 15:40:02 浏览: 140
可以使用Java 8的流式操作和Collector来完成该任务。具体步骤如下:
1. 使用stream()方法将List<String>转换为Stream<String>类型;
2. 使用filter()方法筛选出以"A"开头的字符串;
3. 使用collect()方法将筛选后的字符串转换为Map<String, Long>类型,其中键为字符串,值为出现次数;
4. 使用entrySet()方法将Map<String, Long>转换为Set<Map.Entry<String, Long>>类型;
5. 使用stream()方法将Set<Map.Entry<String, Long>>转换为Stream<Map.Entry<String, Long>>类型;
6. 使用sorted()方法将Stream<Map.Entry<String, Long>>按照值降序排序;
7. 使用limit()方法取前100个元素;
8. 使用forEach()方法遍历结果并输出。
代码示例:
```
List<String> list = new ArrayList<>();
// 添加一万条数据到list中
Map<String, Long> result = list.stream()
.filter(s -> s.startsWith("A"))
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
Set<Map.Entry<String, Long>> entrySet = result.entrySet();
List<Map.Entry<String, Long>> sortedList = entrySet.stream()
.sorted(Map.Entry.<String, Long>comparingByValue().reversed())
.limit(100)
.collect(Collectors.toList());
sortedList.forEach(entry -> System.out.println(entry.getKey() + ": " + entry.getValue()));
```
其中,Map.Entry<String, Long>表示一个键值对,getKey()方法获取键,getValue()方法获取值。
阅读全文