java - 是否有一种数据结构能够获取 N 个最大元素的集合,并用 Java 实现?

标签 java data-structures treeset

java中有TreeSet数据结构,它提供了获取1个最大元素的能力。我需要能够获取 N 个最大元素集合的数据结构。

我需要这样的东西:

GreatestN<Integer> greatest = new GreatestN<>(Arrays.asList(5, 2, 1, 7));
greatest.getN(2); // returns {1, 2}
greatest.getN(3); // returns {1, 2, 5}

greatest.add(0);
greatest.getN(2); // returns {0, 1}

最佳答案

您可以对列表进行排序,然后传递索引值以获得最大的数字。

    List<Integer> greatest = Arrays.asList(5, 2, 1, 7);
    Collections.sort(greatest); // By default sorts ascending 
    System.out.println(greatest.get(greatest.size()-1)); //will give you greatest element in the list.
    //System.out.println(greatest.get(greatest.size()-1-nthNumber));
    System.out.println(greatest.get(0));//will give you lowest element in the list.

关于java - 是否有一种数据结构能够获取 N 个最大元素的集合,并用 Java 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42303232/

相关文章:

java - 自定义treeSet类,如何编写迭代器

java - 什么是 setBounds 以及如何使用它?

c - 需要查找某个数字是否已存在于任何给定范围内

java - 抽象数据类型(ADT)和数据结构有什么区别?

java - 具有自定义比较器的 TreeSet 未产生正确的结果

java - 将字符串添加到 TreeSet<String> 时出现 NullPointerException

java - 错误 : type parameters of <T>T cannot be determined during Maven Install

java - 没有鉴别器列的 EclipseLink JPA 继承

java - 无法在 mysql DB 中保留 1970 年以下的日期

ios - 初始化大量实例