我想遍历我的TreeSet中的对象,我可以通过使用toArray创建一个数组来实现,但我不需要遍历集合中的所有对象。
如何遍历集合中的对象(从第一个开始,而不是第二个,依此类推)?
关于TreeSet的另一个小问题:我可以保持TreeSet中的对象排序(这样第一个对象将具有最小的键,等等)?
编辑:假设我有一个类myInt (带有整数myInteger),并且我想在TreeSet中以不同于自然排序的方式使用它,我需要在我的类(myInt)中定义什么才能做到这一点?
发布于 2011-10-15 14:39:32
如何遍历集合中的对象
迭代集合项目的最简单方法如下所示:
SortedSet<T> set = new TreeSet<T>();
for (T elem : set) {
// use elem
}我可以让TreeSet中的对象保持排序吗
TreeSet是自动排序的,所以你不需要做任何事情。
我有一个类MyInt (带有int myInteger),我想在TreeSet中以不同于自然顺序的顺序使用它
您有两个选择:
选项1:使其实现
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**:**时提供
public class MyIntCmp implements Comparator<MyInt> {
// implement compare() and equals() as per Comparator javadoc
}
SortedSet<T> set = new TreeSet<T>(new MyIntCmp());发布于 2011-10-15 14:26:52
for (MySetElementType element : mytreeset) {
}TreeSet始终按照对象compareTo (可比较接口)的实现方式对对象进行排序。(或者,您可以将单独的比较器传递到TreeSet构造函数中。)
发布于 2011-10-15 14:26:38
由于SetTree实现了iterable,因此您可以使用常规的for each循环,也可以直接使用迭代器。在javadoc中,它说它将按升序迭代。
http://download.oracle.com/javase/6/docs/api/java/util/TreeSet.html#iterator()
https://stackoverflow.com/questions/7776203
复制相似问题