为什么Java的TreeSet没有get()方法?

so.*_*red 23 java collections treeset

如果我想检索和更新存储在TreeSet中的对象,该怎么办?

我问的原因是,我希望能够维护一些能够存储学生的数据结构.我希望它被排序(按成绩 - 这是学生的实例变量),并且 - 即使在我更新一个(或多个)成绩之后,它也需要保持排序.

因此,在简要查看了Java的集合之后,我决定使用TreeSet并设置一个比较器,按比例对两个学生进行比较.问题是,我刚发现TreeSet没有get()方法!

任何帮助和建议将不胜感激.

Jes*_*per 27

你期望一个get()方法Set做什么?

  • 集合没有索引,所以a get(int index)没有意义.(List如果要按索引获取元素,请使用a ).
  • get(Object obj) 也没有意义,因为你已经拥有了你想要获得的对象.
  • 已经有一种contains()方法来检查a是否Set包含对象.
  • Set如果要对集合中的所有元素执行某些操作,则可以迭代a .

  • 我不同意第二个.如果obj的compare方法只比较内容而不是引用,则get(Object obj)很有用.那么如果我想在Set中获取元素的引用呢? (22认同)
  • 但是如果我有一个树集,它会被排序,但它也没有 get() ...... (3认同)
  • 正是我想写的:+1.除了索引的情况:我会写"使用`List`"而不是"毫无意义" (2认同)
  • 我同意 `get()` 在 `SortedSet` 中有意义 (2认同)

ary*_*ann 13

您可以使用Iterator从树集中检索元素.你可以尝试这样的事情:

Iterator<Integer> it = treeSet.iterator();

Integer current = 0;
while(it.hasNext() ) {
current = it.next();

}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.