我想查看TreeSet
内的对象,我可以通过使用toArray
创建一个数组来完成它,但我不需要遍历Set中的所有对象。 / p>
如何查看Set中的对象(从第一个开始,而不是第二个等)?
关于TreeSet
的另一个小问题:我可以将TreeSet
中的对象保持排序(因此第一个对象将使用最小的键等)吗?
编辑:说我有一个类myInt(使用int myInteger)并且我想在TreeSet中使用它而不是自然的,我需要在我的类(myInt)中定义什么才能做到这一点? / p>
答案 0 :(得分:3)
如何查看集合
中的对象
迭代集合项目的最简单方法是:
SortedSet<T> set = new TreeSet<T>();
for (T elem : set) {
// use elem
}
我可以将TreeSet中的对象保持排序
TreeSet
会自动排序,因此您无需执行任何操作。
我有一个MyInt类(使用int myInteger),我希望在TreeSet中使用它,其顺序与自然顺序不同
您有两种选择:
选项1:实施Comparable<MyInt>
:
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
时提供Comparator<MyInt>
:
public class MyIntCmp implements Comparator<MyInt> {
// implement compare() and equals() as per Comparator javadoc
}
SortedSet<T> set = new TreeSet<T>(new MyIntCmp());
答案 1 :(得分:1)
for (MySetElementType element : mytreeset) {
}
TreeSet始终按照对象compareTo(Comparable interface)的实现方式对对象进行排序。 (或者您可以将单独的Comparator传递给TreeSet构造函数。)
答案 2 :(得分:0)
由于SetTree实现了iterable,你可以为每个循环使用常规或直接使用迭代器。在javadoc中,它表示它将按升序迭代。
http://download.oracle.com/javase/6/docs/api/java/util/TreeSet.html#iterator()
答案 3 :(得分:0)