我需要保留前 N(< 1000) 个整数,同时尝试从一个大的整数列表(大约一百万个大小的惰性列表)中添加值。我想尝试向集合中添加值,但只需要保留前 N(最高值)整数。是否有任何首选数据结构可用于此目的?
最佳答案
我建议使用一些排序的数据结构,例如TreeSet
。插入前先检查集合中的项数,如果达到1000,如果小于新加入的数,则去掉最小的数,加入新的数。
TreeSet<Integer> set = ...;
public void add (int n) {
if (set.size () < 1000) {
set.add (n);
} else {
Integer first = set.first();
if (first.intValue() < n) {
set.pollFirst();
set.add (n);
}
}
}
关于java - 在 Java 中保留前 (N) 个值的固定大小集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25108416/