使用Arrays.stream()
结合Collectors.groupingBy()
和Collectors.counting()
来统计数组中每个元素出现个数,按照出现次数降序排列后获取前五个元素及其出现次数的示例代码:
import java.util.*;
import java.util.stream.Collectors;
public class ArrayElementCountTopFive {
public static void main(String[] args) {
// 自拟数组
Integer[] array = {1, 2, 3, 3, 1, 2, 1, 4, 4, 4, 5, 5, 6, 6, 6, 6};
// 步骤一:使用流操作统计元素出现个数
Map<Integer, Long> countMap = Arrays.stream(array)
.collect(Collectors.groupingBy(e -> e, Collectors.counting()));
// 步骤二:将Map的键值对转换为列表,方便后续排序及获取前五个
List<Map.Entry<Integer, Long>> entryList = countMap.entrySet().stream()
.collect(Collectors.toList());
// 步骤三:使用Comparator自定义比较器对列表进行降序排序
entryList.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));
// 步骤四:获取前五个元素及其出现次数
int topSize = Math.min(5, entryList.size());
for (int i = 0; i < topSize; i++) {
Map.Entry<Integer, Long> entry = entryList.get(i);
System.out.println("元素 " + entry.getKey() + " 出现了 " + entry.getValue() + " 次");
}
}
}
标签:Stream,Collectors,stream,Map,降序,元素,entryList,次数 From: https://blog.csdn.net/duehebfbf/article/details/143801084