我尝试过使用 Java 流 API,但只得到一个值,
整数变量 = lst.stream().max(Integer::compare).get();
这将为您提供该列表的最大值。要获得前 5 名,您必须执行以下操作:
lst.stream()
.sorted(Comparator.reverseOrder())
.limit(5)
.collect(Collectors.toList());
sorted 方法将按升序排序,如下所示:
sorted() 返回一个由该流的元素组成的流,
按自然顺序排序。
但是,我们可以使用sorted(Comparator<? super T> comparator):
返回由该流的元素组成的流,已排序
根据提供的比较器。
因此需要传递Comparator.reverseOrder() 进行降序排序。 limit(5) 将从流中提取前 5 个元素。
一个更通用的方法:
private static void printTop(Collection<Integer> col, int top) {
List<Integer> collect = col.stream().sorted(Comparator.reverseOrder()).limit(top).collect(Collectors.toList());
System.out.println(collect);
}
一个运行的例子:
public static void main(String []args){
List<Integer> lst = List.of(10, 15, 16, 8, 100, 1, 40);
printTop(lst, 5);
}
private static void printTop(Collection<Integer> col, int top) {
List<Integer> collect = col.stream().sorted(Comparator.reverseOrder()).limit(top).collect(Collectors.toList());
System.out.println(collect);
}
输出:
[100, 40, 16, 15, 10]