2011-10-15 70 views
1

我想查看我的TreeSet中的對象,我可以通過使用toArray來創建一個數組,但我不需要查看Set中的所有對象。Java:使用TreeSet

我該如何檢查Set中的對象(從第一個比第二個等開始)?

另一個關於TreeSet的小問題:我可以保留對TreeSet中的對象進行排序(因此第一個對象將使用最小的關鍵字等)。

編輯:說我有一個類myInt(與int myInteger),我想在TreeSet中使用它與自然不同的排序,我需要在我的類(myInt)中定義要做到這一點?

+0

看起來像TreeSet中保持它的分類,它看起來像第一個()會給你最小的,其中最後的()爲您提供了最大的。你也可以在任何集合上使用迭代器遍歷樹。 – Matt

+0

@Matt - TreeSet保持它根據什麼鍵來排序? – Belgi

+0

你可以創建一個比較器,或者按它的自然順序進行排序。 http://download.oracle.com/javase/1.4.2/docs/api/java/util/TreeSet.html – Matt

回答

3

我怎麼能走在對象遍歷集合的項目設置

最簡單的方法是,像這樣:

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()); 
+0

請查看我的問題編輯 – Belgi

+0

@Belgi:查看擴展的答案。 – NPE

+0

謝謝,很好的回答! – Belgi

1
for (MySetElementType element : mytreeset) { 
} 

TreeSet中始終保持在對象的compareTo(可比接口)如何實現排序的對象。 (或者你可以通過一個獨立的比較到TreeSet的構造函數)。

0
  1. 內TreeSet中的項目按,如果你不給自己比較自己 自然順序自動排序。
  2. 第二件事,你可以定義一個Iterator去通過TreeSet的 項目的情況下直接將其轉換爲陣列。