【发布时间】:2016-08-25 14:54:06
【问题描述】:
我有关注TreeMap:
Map<String, Map<String, String>> result = new TreeMap<String, Map<String, String>>();
result.put("Tier 1", "My First String", "My First String ABC");
result.put("Tier 2", "My First String", "My First String DEF");
result.put("Tier 3", "My First String", "My First String DDD");
result.put("Tier 10", "My Last String", "My First String TTT");
打印出来的结果在“Tier 10”处不按顺序排列String:
Tier 1, My First String, My First String ABC
Tier 10, My First String, My First String TTT
Tier 2, My First String, My First String DEF
Tier 3, My First String, My First String DDD
我希望它符合逻辑顺序:
Tier 1, My First String, My First String ABC
Tier 2, My First String, My First String DEF
Tier 3, My First String, My First String DDD
Tier 10, My First String, My First String TTT
我尝试使用Comparator如下:
Map<String, Map<String, String>> result = new TreeMap<String, Map<String, String>>(
new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
但这没有帮助。
【问题讨论】:
-
定义比较器来进行你想要的比较并使用它。
-
我确实定义了一个比较器,但它不起作用
-
您可能想要使用自然顺序排序。 compareTo() 方法将进行字母排序。
-
您是否考虑过比
String更丰富的密钥类型?也许类似于一个简单的对象,它有一个名为“label”的String和一个名为“index”的Integer? (但不要忘记实现equals和hashCode!)