升序

2016-02-12 57 views
0

我有兩個UserList對象排序的HashSet對象,合併:升序

objectList1.addAll(objectList2); 

爲了避免轉換爲HashSet重複:

Set<User> users = newHashSet(objectList); 

我怎麼能基於按升序的用戶排序名字?

我試着用TreeSet,而不是HashSet,但拋出Exception

如何在不使User類實現 Comparable<User>的情況下實現結果?

+0

Collections.sort(收藏,比較) –

+0

您能詳細解釋一下,我怎麼會通過結果集比較 –

+4

「我嘗試使用Treeset,而不是Hashset,但拋出異常」 - 那麼你可能沒有指定一個適當的比較。 –

回答

3

實現可比較接口。 https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html

或使用比較器。 https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html

任何一個都應該工作。問題在於,如果Set不知道如何比較兩個元素,它無法知道如何排序。

說你想用比較器對你的用戶,你可以定義一個這樣的:

Comparator<User> comparator = new Comparator<User>() { 
    @Override 
    public int compare(User u1, User u2) { 
     return u1.name.compareTo(u2.name); 
    } 
}; 
+0

Java 7 –

+0

這些接口幾乎沒有改變,它仍然以相同的方式工作! –

+0

是否有任何簡單的方法將Hashset移動到Treeset –