2012-01-24 9 views
0
for(int i=0;i<videos.length();i++){      
    HashMap<String, String> map = new HashMap<String, String>();  
    JSONObject e = videos.getJSONObject(i); 

    map.put("id", String.valueOf(i)); 
    map.put("title", e.getString("title")); 
    map.put("description", e.getString("description")); 
    mylist.add(map); 
}  

こんにちは、アルファベット順にコードをソートしようとしています。私は木のマップを知っている、このようなもののために使用されるはずですが、それを行うにはもっと大きな面倒です。私はハッシュマップを整理する際にエラーが発生しており、多くの例を見てきました。このハッシュマップをソートするにはどうすればよいですか?

+0

注文を知っている場合は、HashMapではなくLinkedHashMapを使用することができます。ここで私はあなたがそれを使用できると思います。さもなければTreeMapを使うことができます。これはうまくいくはずです。 –

+0

このケース専用に設計されたTreeMapを使用していないのはなぜですか?どのような面倒を見ていますか? – templatetypedef

答えて

2

:次に、あなたは、このようなタイトルで、あなたのマップを並べ替えることができます

public class VideoComparator implements Comparator<Map<String, String>> { 
    private final String key; 

    public VideoComparator(String key) { 
     this.key = key; 
    } 

    public boolean equals(Object object) { 
     return this == object; 
    } 

    public int compare(Map<String, String> map1, Map<String, String> map2) { 
     return map1.get(key).compareTo(map2.get(key)); 
    } 
} 

:あなたはこのような何かを行うことができます。

for(int i=0;i<videos.length();i++){      
     Map<String, String> map = new TreeMap<String, String>();  
     JSONObject e = videos.getJSONObject(i); 

     map.put("id", String.valueOf(i)); 
     map.put("title", e.getString("title")); 
     map.put("description", e.getString("description")); 
     mylist.add(map); 
    } 

(あなたがList<HashMap>するmylistを宣言するミスを犯した場合など)、それは手間がたくさんいたとしても、あなたは選択の余地を持っています。 A HashMapは、本質的にソートされていない/順序付けられていないので、その事実を変更することはできません。 LinkedHashMapを代わりに使用できる場合は、アルファベット順にエントリを追加できますが、マップタイプを変更できる場合はTreeMapを使用することもできます。

+0

2行目が 'AbstractMap map = new TreeMap ();'になるべきではありませんか? – Vladimir

+0

@Vladimir - oops ...が修正されました。しかし、それは 'AbstractMap'ではなく' Map'でなければなりません。 –

+0

@ Vladimir-あなたはそれを行うことができますが、Mapだけでもいいと言っています。 AbstractMapは主に継承されるもので、Map(IIRC)の上には何も表示されません – templatetypedef

1

ハッシュマップをソートすることはできません。

"Mapインターフェイスには3つのコレクションビューがあり、マップの内容をキーのセット、値のコレクション、またはキーと値のマッピングのセットとして表示できます。マップの順序は、 TreeMapクラスのようなマップ実装の中には、その順序を保証するものや、HashMapクラスのようなものはありません。

引用形式:http://docs.oracle.com/javase/6/docs/api/java/util/Map.html

0

あなたがリストをソートしようとしている場合は、コンパレータを実装する必要があります。 TreeMapのを使用するためには大きな手間ではありません

Collections.sort(mylist, new VideoComparator("title")); 
関連する問題