在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);