如何使用Java 8流从列表列表中获取最大列表的大小?

Mah*_*aha 5 java java-8 java-stream

说我有以下列表列表"

List l1 = Arrays.asList(1,2,3,4);
List l2 = Arrays.asList(1,2,3,4,5);
List l3 = Arrays.asList(1,2,3,4,5,6);
List<List> lists = Arrays.asList(l1,l2,l3);
Run Code Online (Sandbox Code Playgroud)

如何使用Java 8流API了解最大列表的大小?我想,这样的事情会起作用:

lists.stream().reduce(Integer.MIN_VALUE, (a,b) -> Integer.max(a.size(), b.size()));
Run Code Online (Sandbox Code Playgroud)

但由于显而易见的原因,它给了我:

Type mismatch: cannot convert from int to List
Run Code Online (Sandbox Code Playgroud)

如何使用Java 8流进行上述操作?(如果还有其他更好的方法可行)

我也可以参考最大尺寸的列表吗?

ern*_*t_k 13

你可以打电话max:

lists.stream().mapToInt(List::size).max().getAsInt()
Run Code Online (Sandbox Code Playgroud)

并获取最大尺寸的列表:

lists.stream().max(Comparator.comparing(List::size)).get()
Run Code Online (Sandbox Code Playgroud)


jah*_*hra 5

如果您只需要知道大小,而不是列表本身.

List l1 = Arrays.asList(1,2,3,4);
List l2 = Arrays.asList(1,2,3,4,5);
List l3 = Arrays.asList(1,2,3,4,5,6);
List<List> lists = Arrays.asList(l1,l2,l3);
lists.stream().map(List::size).max(Comparator.naturalOrder()).get();
Run Code Online (Sandbox Code Playgroud)