2012-11-30 1 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에 전달하여 중복 된 항목을 제거하여 정렬 된 순서를 가져옴

던져

처리되지 않은 예외 : 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

캐스트 할 수없는 클래스 java.lang.ClassCastException가, 당신이 Comparable 인터페이스를 구현할 필요가 있다고 생각하고, compareTo 기능을 무시하십시오. 그렇지 않으면 콜렉션은 객체 정렬 방법을 알 수 없습니다. 기본적으로 컬렉션은 요소의 자연 순서에 따라 정렬합니다.