如何从ArrayList的前N个值中获取最大值?
有一个ArrayList存储整数值。假设 arrayList 存储的值是:10, 20, 30, 40, 50。
我知道如何找到集合的最大值。我将不得不这样做:
Collections.max(arrayList);
但是我应该怎么做才能找到集合的前 3 个元素的最大值?所以在这个例子中,它会是 30。有集合的子列表函数吗?
回答
List有一个可以使用的subList方法:
Collections.max(arrayList.subList(0, 3))
一般没有subListfor Collections,因为并非所有集合都是列表,而且对于某些集合,“前 N 个元素”没有多大意义,因为它们不维护任何有意义的顺序(例如HashSet)。
您可以Collection通过限制迭代来获取any 的前三个元素(以集合提供的任何顺序)。最好为此使用流:
yourCollection.stream().limit(3).collect(Collectors.toList());
或者,您可以直接在流中找到您要查找的内容,而无需收集某些集合中的元素:
Optional<Integer> max = yourCollection.stream.limit(3).max(Comparator.naturalOrder());