0

私はこの地図を持っています:

Map<Integer,List<EventiPerGiorno>> mapEventi=new HashMap<Integer,List<EventiPerGiorno>>();

EventiPerGiornoはComparableオブジェクトですマップからソートされたリストを取得するにはどうすればよいですか?

で試しました

Collection<List<EventiPerGiorno>> collection=mapEventi.values()
Comparable.sort(collection);

しかし、 Comparable.sort() はリストを比較できるものとして好みません。ComparableList はありますか?

編集

これは同等の方法です...

public class EventiPerGiorno implements Comparable<EventiPerGiorno>{


    @Override
    public int compareTo(EventiPerGiorno o) {
        return this.getPrimoSpettacolo().compareTo(o.getPrimoSpettacolo());
    }

}
4

4 に答える 4

1

JavaCollectionsには、それらに関連付けられた順序はありません。CollectionList最初にしてから並べ替えることができます。

Collection<List<EventiPerGiorno>> collection = mapEventi.values()
YourComparableList<List<EventiPerGiorno>> list = new YourComparableList(collection);
Collections.sort(list);

このためには、何らかの種類のListimplementsを作成する必要がありますComparableこのインスタンスで Comparable for List を正しく実装するにはどうすればよいですか? を参照してください。たとえば。

List<EventiPerGiorno>これは typeのオブジェクトではなく、type のオブジェクトをソートしていることに注意してくださいEventiPerGiorno。後者をソートすることに興味がある場合は、代わりにこれが必要になる場合があります。

ArrayList<EventiPerGiorno> bigList = new ArrayList<EventiPerGiorno>();
for (List<EventiPerGiorno> list : mapEventi.values()) {
    bigList.addAll(list);
}
Collections.sort(bigList);
于 2013-11-06T14:13:37.057 に答える
0

List を拡張して Comparable を実装する必要があります。複数のリストを比較するために使用できるデフォルトの自然順序付けはありません。

コレクション フレームワークは、アイテム数、重複数、またはリスト内の値でリストを並べ替えるかどうかを認識しません。

次に、次を使用して並べ替えます。

http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#sort%28java.util.List%29

于 2013-11-06T14:13:27.870 に答える