gpt4 book ai didi

java - 在 Java 中,按 key.length() 对 hashmap 进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:27 24 4
gpt4 key购买 nike

我有一个像这样的 HashMap :

HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("java",4);
map.put("go",2);
map.put("objective-c",11);
map.put("c#",2);

现在我想按键长度对这个映射进行排序,如果两个键的长度相等(例如 go 和 c# 的长度均为 2),则按 alphba 顺序排序。所以我希望得到的结果是这样的:

打印结果:目标-C,11 java ,4#,2去吧,2

这是我自己的attamp,但是一点用都没有...

      HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("java",4);
map.put("go",2);
map.put("objective-c",11);
map.put("c#",2);

Map<String,Integer> treeMap = new TreeMap<String, Integer>(
new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.length().compareTo(s2.length());
}
}
);

实际上“compareTo”方法显示为红色(无法编译)....请有人帮我一些代码示例...我对如何使用比较器类来自定义比较对象有点困惑...

最佳答案

编译器报错,因为您不能在 int 上调用 compareTo。正确的 map 排序方式如下:

Map<String, Integer> treeMap = new TreeMap<String, Integer>(
new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
if (s1.length() > s2.length()) {
return -1;
} else if (s1.length() < s2.length()) {
return 1;
} else {
return s1.compareTo(s2);
}
}
});

前两个条件比较两个 String 的长度,并相应地返回正数或负数。如果 String 的长度相等,第三个条件将按字典顺序比较它们。

关于java - 在 Java 中,按 key.length() 对 hashmap 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25899929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com