我想查看我的TreeSet
中的對象,我可以通過使用toArray
來創建一個數組,但我不需要查看Set中的所有對象。Java:使用TreeSet
我該如何檢查Set中的對象(從第一個比第二個等開始)?
另一個關於TreeSet
的小問題:我可以保留對TreeSet
中的對象進行排序(因此第一個對象將使用最小的關鍵字等)。
編輯:說我有一個類myInt(與int myInteger),我想在TreeSet中使用它與自然不同的排序,我需要在我的類(myInt)中定義要做到這一點?
我想查看我的TreeSet
中的對象,我可以通過使用toArray
來創建一個數組,但我不需要查看Set中的所有對象。Java:使用TreeSet
我該如何檢查Set中的對象(從第一個比第二個等開始)?
另一個關於TreeSet
的小問題:我可以保留對TreeSet
中的對象進行排序(因此第一個對象將使用最小的關鍵字等)。
編輯:說我有一個類myInt(與int myInteger),我想在TreeSet中使用它與自然不同的排序,我需要在我的類(myInt)中定義要做到這一點?
我怎麼能走在對象遍歷集合的項目設置
最簡單的方法是,像這樣:
SortedSet<T> set = new TreeSet<T>();
for (T elem : set) {
// use elem
}
我可以保持TreeSet中的對象排序
TreeSet
自動排序,所以你不需要做任何事情。
我有一個類敏(爲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:供應Comparator<MyInt>
施工時的TreeSet
:
public class MyIntCmp implements Comparator<MyInt> {
// implement compare() and equals() as per Comparator javadoc
}
SortedSet<T> set = new TreeSet<T>(new MyIntCmp());
由於SetTree實現迭代,你可以使用普通的每個循環或直接使用迭代器。 JavaDoc中它說,它會按升序進行迭代。
http://download.oracle.com/javase/6/docs/api/java/util/TreeSet.html#iterator()
for (MySetElementType element : mytreeset) {
}
TreeSet中始終保持在對象的compareTo(可比接口)如何實現排序的對象。 (或者你可以通過一個獨立的比較到TreeSet的構造函數)。
看起來像TreeSet中保持它的分類,它看起來像第一個()會給你最小的,其中最後的()爲您提供了最大的。你也可以在任何集合上使用迭代器遍歷樹。 – Matt
@Matt - TreeSet保持它根據什麼鍵來排序? – Belgi
你可以創建一個比較器,或者按它的自然順序進行排序。 http://download.oracle.com/javase/1.4.2/docs/api/java/util/TreeSet.html – Matt