Java获取list中数值最大的4个元素的子list 代码实现
时间: 2024-11-09 14:19:06 浏览: 6
在Java中,你可以使用`PriorityQueue`(优先队列)数据结构结合`List`来获取列表中数值最大的四个元素。这是因为`PriorityQueue`会自动维护元素的顺序,其中最大的元素位于堆顶。以下是简单的代码实现:
```java
import java.util.*;
public class Main {
public static List<Integer> getMaxFour(List<Integer> list) {
// 创建一个最大优先级队列,容量为4
PriorityQueue<Integer> maxHeap = new PriorityQueue<>(4, Collections.reverseOrder());
// 遍历列表,将前四个最大的元素加入队列
for (int num : list) {
if (maxHeap.size() < 4) {
maxHeap.offer(num);
} else if (num > maxHeap.peek()) {
maxHeap.poll(); // 如果新元素大于堆顶,移除堆顶并添加新元素
maxHeap.offer(num);
}
}
// 将前四个最大的元素转换回List形式并返回
return new ArrayList<>(maxHeap);
}
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(5, 2, 9, 1, 7, 6, 8, 3, 4);
List<Integer> largestFour = getMaxFour(numbers);
System.out.println("四大值: " + largestFour);
}
}
```
在这个例子中,`getMaxFour`方法首先创建了一个容量为4的最大优先队列,并遍历输入列表。如果列表中有新的元素且队列未满,就直接加入;如果队列已满但新元素更大,则从队列头部移除最小元素,然后添加新元素。
运行这段代码,你会得到列表中最大的四个元素作为一个子列表。
阅读全文