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 を使用する予定です。しかし、私はソートされた方法でリストを取得していません。ここで何が問題なのかを理解できません。代わりに、次の例外がスローされます。何か助けはありますか?

未処理の例外がスローされました: class 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)
4

1 に答える 1

1

オブジェクトを に入れる前に、インターフェイスを実装し、関数をオーバーライドSortedSetする必要があると思います。そうしないと、コレクションはオブジェクトをどのようにソートしたいかを知ることができません。デフォルトでは、コレクションは要素の自然な順序に基づいて並べ替えます。ComparablecompareTo

于 2012-11-30T05:10:23.510 に答える