我有一个Map
:
Map<String, ArrayList<Students>> studentsInClass
我可以通过遍历Student
并将其分配给Map
并进行比较来找到具有最大int
个类的类。
我想知道什么是最佳的Java 8方法。我想获得List
中所有值中最高的Map
大小。
答案 0 :(得分:3)
我只想在地图上获得最大的列表大小
如果我正确理解了您的意思,那么您应该尝试以下操作:
int maxSize = studentsInClass.values()
.stream()
.map(List::size)
.max(naturalOrder())
.orElse(0);
答案 1 :(得分:0)
Stream
具有max
方法,可用于根据max
元素的任何属性来查找Stream
的{{1}}元素
Stream
或(无默认值):
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
或者,如果您需要最大类别的人数(而不是该类别的名称):
Optional<String> largestClassName =
studentsInClass.entrySet()
.stream()
.max(Comparator.comparingInt(e -> e.getValue().size()))
.map(Map.Entry::getKey);
或(无默认值):
int maxClassSize =
studentsInClass.values()
.stream()
.mapToInt(List::size)
.max();
.orElse(0); // default value for when the Map is empty