如何从ArrayList的前N个值中获取最大值?

Ron*_*cer 1 java collections sublist

有一个ArrayList存储整数值。假设 arrayList 存储的值是:10, 20, 30, 40, 50

我知道如何找到集合的最大值。我将不得不这样做:

Collections.max(arrayList); 
Run Code Online (Sandbox Code Playgroud)

但是我应该怎么做才能找到集合的前 3 个元素的最大值?所以在这个例子中,它会是 30。有集合的子列表函数吗?

Cos*_*atu 5

List有一个可以使用的subList方法:

Collections.max(arrayList.subList(0, 3))
Run Code Online (Sandbox Code Playgroud)

一般没有subListfor Collections,因为并非所有集合都是列表,而且对于某些集合,“前 N 个元素”没有多大意义,因为它们不维护任何有意义的顺序(例如HashSet)。

您可以Collection通过限制迭代来获取any 的前三个元素(以集合提供的任何顺序)。最好为此使用流:

yourCollection.stream().limit(3).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

或者,您可以直接在流中找到您要查找的内容,而无需收集某些集合中的元素:

Optional<Integer> max = yourCollection.stream.limit(3).max(Comparator.naturalOrder());
Run Code Online (Sandbox Code Playgroud)