首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:使用TreeSet

Java:使用TreeSet
EN

Stack Overflow用户
提问于 2011-10-15 14:23:25
回答 4查看 13.9K关注 0票数 1

我想遍历我的TreeSet中的对象,我可以通过使用toArray创建一个数组来实现,但我不需要遍历集合中的所有对象。

如何遍历集合中的对象(从第一个开始,而不是第二个,依此类推)?

关于TreeSet的另一个小问题:我可以保持TreeSet中的对象排序(这样第一个对象将具有最小的键,等等)?

编辑:假设我有一个类myInt (带有整数myInteger),并且我想在TreeSet中以不同于自然排序的方式使用它,我需要在我的类(myInt)中定义什么才能做到这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-15 14:39:32

如何遍历集合中的对象

迭代集合项目的最简单方法如下所示:

代码语言:javascript
复制
SortedSet<T> set = new TreeSet<T>();
for (T elem : set) {
  // use elem
}

我可以让TreeSet中的对象保持排序吗

TreeSet是自动排序的,所以你不需要做任何事情。

我有一个类MyInt (带有int myInteger),我想在TreeSet中以不同于自然顺序的顺序使用它

您有两个选择:

选项1:使其实现

代码语言:javascript
复制
public class MyInt implements Comparable<MyInt> {
   public int compareTo(MyInt o) {
     // return -1 if `this` is less than `o`
     //         0 if `this` is equal to `o`
     //         1 of `this` is greater than `o`
   }
}

选项2:在构建 TreeSet**:**时提供

代码语言:javascript
复制
public class MyIntCmp implements Comparator<MyInt> {
  // implement compare() and equals() as per Comparator javadoc
}
SortedSet<T> set = new TreeSet<T>(new MyIntCmp());
票数 3
EN

Stack Overflow用户

发布于 2011-10-15 14:26:52

代码语言:javascript
复制
for (MySetElementType element : mytreeset) {
}

TreeSet始终按照对象compareTo (可比较接口)的实现方式对对象进行排序。(或者,您可以将单独的比较器传递到TreeSet构造函数中。)

票数 1
EN

Stack Overflow用户

发布于 2011-10-15 14:26:38

由于SetTree实现了iterable,因此您可以使用常规的for each循环,也可以直接使用迭代器。在javadoc中,它说它将按升序迭代。

http://download.oracle.com/javase/6/docs/api/java/util/TreeSet.html#iterator()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7776203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档