【发布时间】:2019-05-06 13:47:29
【问题描述】:
考虑下面包含重复项的数组列表。我将如何过滤掉出现 4 次的整数 89 ,例如 89:4 。预期输出 89 : 4
List<Integer> list = Arrays.asList(1, 1, 2, 3, 5, 8, 13, 21, 21, 61, 98, 15, 25, 41, 67,55, 89, 89, 89, 89 );
Map<Integer ,Long > map = list.stream()
.collect(Collectors.groupingBy(c ->c , Collectors.counting())) ;
map.forEach( (k , v ) -> System.out.println( k + " : "+ v ));
//我期待下面的输出 89 : 4
// 上面代码sn-p的实际输出(键,值)对如下 1:2 98:1 2:1 67:1 3:1 5:1 8 : 1 41:1 13:1 15:1 21:2 55:1 89 : 4 25 : 1 61:1
【问题讨论】:
-
89或4这里有什么特别之处?您是否尝试在列表中查找最常见的项目? -
我得到了答案列表
list = Arrays.asList(1, 1, 2, 3, 5, 8, 13, 21, 21, 61, 98, 15, 25, 41, 67 ,55, 89, 89, 89, 89 ); final Optional > max = list.stream().collect( Collectors.groupingBy(Function.identity(), Collectors.counting())) .entrySet().stream().max( Comparator.comparing(Map.Entry::getValue)); System.out.println(max.get()); -
你可以保留任何整数 我对 89 不具体,用一些随机整数替换 89 我没问题@KorayTugay
-
@sekhar 您的问题标题与您的预期大相径庭。您的意思是要找到出现的最大整数及其计数吗?
-
是的,在arraylist @nullpointer 中查找重复整数的最大出现次数及其计数
标签: java arraylist java-8 hashmap