ホームページ >Java >&#&チュートリアル >Java Mapのキーによるソートと値によるソートの実装方法
1. 理論的な準備
Map はキーと値のペアのコレクション インターフェイスであり、その実装クラスには主に HashMap、TreeMap、Hashtable、LinkedHashMap などが含まれます。
TreeMap: Red-Black ツリーに基づく NavigableMap 実装。キーの自然な順序に従って、または使用されるコンストラクターに応じて、マップの作成時に提供される Comparator に従ってソートされます。
HashMap の値は順序がありません。キーの HashCode に従って実装されます。この順序のない HashMap のソートをどのように実装すればよいでしょうか。 TreeMapの値ソートを参照してください。
Map.Entry はコレクション ビューを返します。
2. キーの並べ替え
ツリーマップの並べ替え方法を変更する必要がある場合は、コンパレータを使用する必要があります。 Comparator は、コレクション オブジェクトまたは配列をソートできるコンパレータ インターフェイスです。このインターフェイスの public Compare(T o1, To2) メソッドを実装すると、次のようにソートを実行できます。
import java.util.Comparator; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class TreeMapTest { public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>( new Comparator<String>() { public int compare(String obj1, String obj2) { // 降序排序 return obj2.compareTo(obj1); } }); map.put("b", "ccccc"); map.put("d", "aaaaa"); map.put("c", "bbbbb"); map.put("a", "ddddd"); Set<String> keySet = map.keySet(); Iterator<String> iter = keySet.iterator(); while (iter.hasNext()) { String key = iter.next(); System.out.println(key + ":" + map.get(key)); } } }
実行結果は次のとおりです。並べ替え
上の例は TreeMap のキー値に基づいて並べ替えていますが、TreeMap の値に基づいて並べ替える必要がある場合もあります。値を並べ替えるには、Collections の sort(List8742468051c85b06f0a0af9e3e506b5c list, Comparator117c5a0bdb71ea9a9d0c2b99b03abe3e c) メソッドを使用する必要があります。これは、指定されたコンパレータによって生成された順序に従って、指定されたリストを並べ替えます。ただし、前提条件があります。つまり、次のように、すべての要素が提供されたコンパレーターに従って比較される必要があります:
d:aaaaa c:bbbbb b:ccccc a:ddddd
実行結果は次のとおりです:
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; public class TreeMapTest { public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>(); map.put("a", "ddddd"); map.put("c", "bbbbb"); map.put("d", "aaaaa"); map.put("b", "ccccc"); //这里将map.entrySet()转换成list List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet()); //然后通过比较器来实现排序 Collections.sort(list,new Comparator<Map.Entry<String,String>>() { //升序排序 public int compare(Entry<String, String> o1, Entry<String, String> o2) { return o1.getValue().compareTo(o2.getValue()); } }); for(Map.Entry<String,String> mapping:list){ System.out.println(mapping.getKey()+":"+mapping.getValue()); } } }
上記の Java Map はキーでソートされ、値でソートされます。実装方法はすべて編集者が共有した内容ですので、ご参考になれば幸いです、また皆さんもPHP中国語サイトを応援していただければ幸いです。
キーによるソートと値によるソートのその他の Java Map 実装方法については、PHP 中国語 Web サイトに注目してください。