在Java8中,如何找到值为列表的映射的最大值?
我有一张地图:在Java8中,如何找到值为列表的映射的最大值?,java,collections,java-8,hashmap,java-stream,Java,Collections,Java 8,Hashmap,Java Stream,我有一张地图: Map<String, ArrayList<Students>> studentsInClass Map studentsInClass 我可以通过迭代Map并将其分配给int并进行比较,找到拥有最多Students的类 我想知道做这件事的最佳和Java8方法是什么。我想获得映射中所有值的最大列表大小 Stream有一个max方法,可用于根据流的元素的任何属性查找流的max元素 String largestClassName = studen
Map<String, ArrayList<Students>> studentsInClass
Map studentsInClass
我可以通过迭代Map
并将其分配给int
并进行比较,找到拥有最多Student
s的类
我想知道做这件事的最佳和Java8方法是什么。我想获得
映射中所有值的最大列表
大小 Stream
有一个max
方法,可用于根据流的元素的任何属性查找流的max
元素
String largestClassName =
studentsInClass.entrySet()
.stream()
.max(Comparator.comparingInt(e -> e.getValue().size()))
.map(Map.Entry::getKey)
.orElse(null); // default value for when the Map is empty
或(无默认值):
或(无默认值):
我只想得到地图上最大的列表大小
如果我没有弄错你的意思,那么你应该试试这个:
int maxSize = studentsInClass.values()
.stream()
.map(List::size)
.max(naturalOrder())
.orElse(0);
1.程序到接口--列表
2。分享你尝试过但没有成功的东西。你想要的输出是什么?你可以很容易地使用Java8中的。
int maxClassSize =
studentsInClass.values()
.stream()
.mapToInt(List::size)
.max();
.orElse(0); // default value for when the Map is empty
OptionalInt maxClassSize =
studentsInClass.values()
.stream()
.mapToInt(List::size)
.max();
int maxSize = studentsInClass.values()
.stream()
.map(List::size)
.max(naturalOrder())
.orElse(0);