2012-11-30 8 views
1
List<User> learnersList=null; 
    List<User> instructorsList=null; 
    List<User> contentCreatorsList=null; 

    try { 
     learnersList=getManagerFactory().getLearningMgmtManager().getAllLearners(); 
     SortedSet<User> userList =new TreeSet<User> (learnersList); 
    } catch (ElearningException e) { 
     log.error("Error in gotoinboxpage method in messagemgmt action"); 
    } 

在上面的代碼中,我想按自然排序中的'userList'對唯一值進行排序。我打算使用TreeSet。但我沒有以排序的方式獲取列表。無法弄清楚這裏發生了什麼問題。下面的異常被拋出。任何幫助?將ArrayList傳遞給TreeSet以獲取刪除重複項的元素的排序順序

未處理的異常拋出:類java.lang.ClassCastException之前,你把你的對象變成SortedSet 用戶不能轉換爲java.lang.Comparable的

at java.util.TreeMap.compare(TreeMap.java:1188) 
    at java.util.TreeMap.put(TreeMap.java:531) 
    at java.util.TreeSet.add(TreeSet.java:255) 
    at java.util.AbstractCollection.addAll(AbstractCollection.java:334) 
    at java.util.TreeSet.addAll(TreeSet.java:312) 
    at java.util.TreeSet.<init>(TreeSet.java:160) 

回答

1

,我認爲你需要實現Comparable接口,以及覆蓋compareTo函數。否則,Collection無法知道如何對對象進行排序。默認情況下,集合只是根據元素的自然順序對其進行排序。