将ArrayList传递给TreeSet以获取元素的排序顺序并删除重复项

时间:2012-11-30 04:59:44

标签: sorting treeset

    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。但我没有按照有条不紊的方式获得列表。无法弄清楚这里出了什么问题。而是抛出以下异常。有什么帮助吗?

抛出未处理的异常:类java.lang.ClassCastException 用户无法转换为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 个答案:

答案 0 :(得分:1)

在将对象放入SortedSet之前,我认为您需要实现Comparable接口,并覆盖compareTo函数。否则,Collection无法知道您要如何排序对象。默认情况下,集合只是根据元素的自然顺序对其进行排序。