如何从 ArrayList 的前 N 个值中获取最大值?
How to get maximum value from of the first N values of an ArrayList?
有一个 ArrayList
存储整数值。假设 arrayList 存储的值是:10, 20, 30, 40, 50
.
我知道如何找到集合的最大值。我必须这样做:
Collections.max(arrayList);
但是我应该怎么做才能找到集合的前 3 个元素中的最大值?所以在这个例子中,它将是30。是否有集合的子列表功能?
您可以执行以下操作:
public static void main(String[] arg) {
List<Integer> list = new ArrayList<>();
list.add(10);
list.add(20);
list.add(30);
list.add(40);
list.add(50);
System.out.println(Collections.max(list.subList(0, 3)));
}
正如 ControlAltDel 在评论中指出的那样,使用 subList 方法提取列表中要计算最大值的部分。
从source可以读到:
List subList(int fromIndex, int toIndex)
Returns a view of the portion of this list between the specified fromIndex, inclusive, and toIndex,
exclusive. (...)
您可以在方法中创建另一个数组列表并存储您想要的所有值,这样您就可以从原始数组列表中添加 10、20、30,停止添加,然后使用3 个元素。
希望对您有所帮助!
List
有一个 subList 方法可以使用:
Collections.max(arrayList.subList(0, 3))
通常 Collection
没有 subList
,因为并非所有集合都是列表,而且对于某些集合而言,“前 N 个元素”没有多大意义,因为他们不维护任何有意义的顺序(例如 HashSet
)。
您可以获取任何 Collection
的前三个元素(以集合提供的任何顺序),方法是使用限制对其进行迭代。最好为此使用流:
yourCollection.stream().limit(3).collect(Collectors.toList());
或者您可以直接在流中找到您要查找的内容,而无需收集某些集合中的元素:
Optional<Integer> max = yourCollection.stream()
.limit(3)
.max(Comparator.naturalOrder());
有一个 ArrayList
存储整数值。假设 arrayList 存储的值是:10, 20, 30, 40, 50
.
我知道如何找到集合的最大值。我必须这样做:
Collections.max(arrayList);
但是我应该怎么做才能找到集合的前 3 个元素中的最大值?所以在这个例子中,它将是30。是否有集合的子列表功能?
您可以执行以下操作:
public static void main(String[] arg) {
List<Integer> list = new ArrayList<>();
list.add(10);
list.add(20);
list.add(30);
list.add(40);
list.add(50);
System.out.println(Collections.max(list.subList(0, 3)));
}
正如 ControlAltDel 在评论中指出的那样,使用 subList 方法提取列表中要计算最大值的部分。
从source可以读到:
List subList(int fromIndex, int toIndex)
Returns a view of the portion of this list between the specified fromIndex, inclusive, and toIndex, exclusive. (...)
您可以在方法中创建另一个数组列表并存储您想要的所有值,这样您就可以从原始数组列表中添加 10、20、30,停止添加,然后使用3 个元素。
希望对您有所帮助!
List
有一个 subList 方法可以使用:
Collections.max(arrayList.subList(0, 3))
通常 Collection
没有 subList
,因为并非所有集合都是列表,而且对于某些集合而言,“前 N 个元素”没有多大意义,因为他们不维护任何有意义的顺序(例如 HashSet
)。
您可以获取任何 Collection
的前三个元素(以集合提供的任何顺序),方法是使用限制对其进行迭代。最好为此使用流:
yourCollection.stream().limit(3).collect(Collectors.toList());
或者您可以直接在流中找到您要查找的内容,而无需收集某些集合中的元素:
Optional<Integer> max = yourCollection.stream()
.limit(3)
.max(Comparator.naturalOrder());