0

いくつかの値を一番上に表示したいマップがあります。

HashMap<String,String> hm = new HashMap<String,String>(); 
hm.put("Phone Number","998291829");
hm.put("Address","12 A Street");
hm.put("Name","Robert Singh");
hm.put("Email","robert@gmail.com");
-
-

名前とメールアドレスを最初と2番目のエントリとして使用したいのですが、どうすればよいですか。

4

5 に答える 5

2

HashMap は、ソート済みまたはソート可能なコレクションではありません。

できることは、独自の Comparator で TreeMap を使用することです。

ただし、アドホック Map の代わりに実際のクラスを使用した方がよいと思います。

于 2012-08-29T17:14:37.753 に答える
0

Contact や Person などの Bean を作成し、そのためのコンパレーターを作成することをお勧めします。

そのため、Bean とコンパレーターの作成が完了したら。それで

Bean のリスト/コレクションにデータを入力する

そして最後に

Collection.sort(yourlist,sortByNameComparator);

Collection.sort(yourlist,sortByemailComparator);

sortByNameComparator と sortByemailComparator は、作成したコンパレータです。

これを見てください。それは間違いなくあなたの問題を解決します。

名前に基づいて連絡先の ArrayList を並べ替えますか?

上記は、コンパレータを作成する例です。

于 2012-09-08T19:16:25.753 に答える
0

を使用する代わりに、要素を追加する順序を保持HashMapする a を使用する必要があります。LinkedHashMap必要な順序で要素を追加する必要があります。

于 2012-08-29T17:13:44.693 に答える
0

ツリー マップを使用できます。コンストラクターはコンパレーターを受け入れます。

マップ内のデータを並べ替えるロジックを実装できるコンパレータの独自の実装を渡すことができます。

于 2012-08-29T17:14:29.553 に答える
-1

使い方によっては、ペアを使用したい場合がありますList<Pair>。ここで、ペアは次のようなものです

public class Pair<J,K> {
    private J key;
    private K value;

    public Pair(J key, K value) {
        this.key = key;
        this.value = value;
    }

    public J getKey() {return key;}
    public K getValue() {return value;}
}
于 2012-08-29T17:17:30.353 に答える