TreeMap
はどのように並べ替えますか?たとえば、次のマップがあるとします。
TreeMap<String, Integer> treemap = new TreeMap<>();
treemap.put("lol", 1);
treemap.put("Marc", 2);
treemap.put("Jesper", 3);
Iterator ittwo = treemap.entrySet().iterator();
while (ittwo.hasNext()) {
Map.Entry pairs = (Map.Entry)ittwo.next();
System.out.println(pairs.getKey() + " = " + pairs.getValue());
ittwo.remove();
}
この出力は次のとおりです。
Jesper = 3
Marc = 2
lol = 1
それで、アルファベット順でない場合、それは何ですか?
アルファベット順だけでなく、大文字と小文字も区別されます。
TreeMap<String, Integer> treemap = new TreeMap<String, Integer>();
treemap.put("Lol", 1);
treemap.put("Marc", 2);
treemap.put("Jesper", 3);
treemap.put("lol1", 1);
treemap.put("marc1", 2);
treemap.put("jesper1", 3);
出力:
Jesper = 3
Lol = 1
Marc = 2
jesper1 = 3
lol1 = 1
marc1 = 2
したがって、必要がない場合は、カスタムコンパレータを使用して、小文字で文字列を比較できます。
TreeMap<String, Integer> treemap = new TreeMap<String, Integer>(new Comparator<String>() {
public int compare(String o1, String o2) {
return o1.toLowerCase().compareTo(o2.toLowerCase());
}
});
treemap.put("Lol", 1);
treemap.put("Marc", 2);
treemap.put("Jesper", 3);
treemap.put("lol1", 1);
treemap.put("marc1", 2);
treemap.put("jesper1", 3);
出力:
Jesper = 3
jesper1 = 3
Lol = 1
lol1 = 1
Marc = 2
marc1 = 2
JavaDocに記載 a TreeMap
"...は、そのキーの自然順序付けに従ってソートされます... "(強調は私のものです)。
したがって、小文字l
がafter大文字M
であるという観点から、UTF "アルファベット"の結果は正しいです。
デフォルトの動作をオーバーライドする場合は、Comparator
コンストラクターにTreeMap
を指定できます。
コンストラクタを介してComparator
を渡していないため、これにより、キーの自然順序付けを使用して新しいTreeMap
が構築されます。
Javaでは、自然順序はlexicographical
順序を意味します。
実際には正しい出力を取得しています。
J(uppercase J)>M(uppercase M)>l(lowercase l).
大文字は辞書的に小文字よりも大きい