【发布时间】:2014-10-26 22:08:17
【问题描述】:
问题
我正在编写一个简单的 Java 程序,其中有一个 TreeSet,其中包含 Comparable 元素(这是我自己编写的一个类)。在特定时刻,我需要仅从中获取前 k 个元素。
我做了什么
目前我为我的问题找到了两种不同的解决方案:
- 使用我写的一个简单的方法;它从初始
TreeSet复制前 k 个元素; - 使用 Google Guava greatestOf 方法。
对于第二个选项,您需要以这种方式调用该方法:
Ordering.natural().greatestOf(mySet, 80))
但我认为使用这种调用是没有用的,因为元素已经排序。我错了吗?
问题
我想在这里问一下,获取包含TreeSet 的前k 个元素的Collection 派生类的正确且有效的方法是什么?
其他信息
Java 版本:>= 7
【问题讨论】:
-
如果原来的
Set发生变化,您是否希望新集合也发生变化?如果是这样,您可以将Set包装在另一个对象中 - 一种非常有效的机制。 -
生成的
Set永远不会被修改。 -
我还不想关闭,但它似乎部分欺骗了this thread,至少在它的算法部分。
-
"...元素已排序..." java.util.SortedSet 的元素已排序。 java.util.Set 的元素没有定义的顺序。 (也就是说,允许 Set 的实现以任何顺序迭代其元素。)
-
@jameslarge 我已经编辑了我的问题。