繁体   English   中英

Java:使用TreeSet

[英]Java: using TreeSet

我想要查看TreeSet的对象,我可以通过使用toArray创建一个数组来完成它,但我不需要遍历Set中的所有对象。

如何查看Set中的对象(从第一个开始比第二个等)?

而关于另一个小问题TreeSet :我能保留在物体TreeSet排序(所以第一个对象将是具有最小键等')?

编辑:说我有一个类myInt(使用int myInteger)并且我想在TreeSet中使用它而不是自然的,我需要在我的类(myInt)中定义什么才能做到这一点?

如何查看Set中的对象

迭代集合项目的最简单方法是:

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());
for (MySetElementType element : mytreeset) {
}

TreeSet始终按照对象compareTo(Comparable interface)的实现方式对对象进行排序。 (或者您可以将单独的Comparator传递给TreeSet构造函数。)

由于SetTree实现了iterable,因此您可以为每个循环使用常规或直接使用迭代器。 在javadoc中,它表示它将按升序迭代。

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

  1. 如果您不提供自己的比较器,TreeSet中的项目将根据其自然顺序自动排序。
  2. 第二件事是你可以定义一个Iterator直接遍历TreeSet项而不将其转换为数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM