java - 在 Java 中保留前 (N) 个值的固定大小集合

标签 java

我需要保留前 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/

相关文章:

java - 安卓PHP用户注册

java - 如何将 Or 与 JUnit 假设一起使用

java - 如何使用 HttpURLConnection 发送请求而不处理 Java 中的响应

java - 将字符串转换为保留小数位的浮点型

java - 字符串宽度错误

Java 相当于 python 中的 string.format()

java - 如何更换杂合子?

java - 使用 Tomcat 和 MySQL 的 RuntimeException

java - 无法在 IntelliJ 15 中添加断点

java - 使用kafka lib反序列化PRIMITIVE AVRO KEY