2

私はTreeMap独自のルールに基づいてキーをソートしたいと考えています。これは私がキーを取得する方法です:

SharedPreferences pref = context.getSharedPreferences("myPrefs2",
                    MODE_PRIVATE);
TreeMap<String, ?> keys = new TreeMap<String, Object>(pref.getAll());

ご覧のとおり、 からキーを取得しますSharedPreferences。キーは次の順序で提供されます: YesterdayOlderToday

Todayからまでの次の注文が必要Olderです。そう: Today, Yesterday, Older.

私はこのようなことを試しました:

SharedPreferences pref = context.getSharedPreferences("myPrefs2",
                MODE_PRIVATE);
TreeMap<String, ?> keys = new TreeMap<String, Object>(pref.getAll()) {
    public int compare(String o1, String o2) {
        // Here the return based on our own rule
    }
};

しかし、そのルールを定義する方法がわからず、. を正しく使用しているかどうかもわかりませんcompare function

TreeMap上記のルールでソートすることは可能ですか?

4

4 に答える 4

1

いいえ。

TreeMapメソッドに依存しませんcompare(どちらも実装しませんComparable)。

代わりに、Comparator<String>サブクラス (匿名クラスでもかまいません) を定義し、compareそこにメソッドを実装します (RaptorDotCpp の説明は適切ですが、これや他の多くのことを説明している JAVADOC を読むこともできます)。

コンストラクターで yourComparatorのインスタンスを渡します。TreeMap

于 2013-09-21T09:25:28.300 に答える