我有一个hashmap
,其中的键是字符串。我需要获取这些键并根据键大小(即字符串长度)对其进行排序,然后将其存储在某个ArrayList
中。
注意:如果两个键的大小相同,那么我们可以把它放在任何顺序。
为(如)。
hm.put("abc","hi");
hm.put("A","hi");
hm.put("ab","hi");
hm.put("a","hi");
您可以使用自定义的比较器
按长度对键进行排序,如下所示:
List<String> s = new ArrayList<>(hm.keySet());
Collections.sort(s, new Comparator<String>(){
@Override
public int compare(String s1, String s2){
return Integer.compare(s2.length(), s1.length());
}
});
TreeSet<String> ts = new TreeSet<>(new Comparator<String>(){
@Override
public int compare(String s1, String s2){
int cmp = Integer.compare(s2.length(), s1.length());
return cmp != 0 ? cmp : s1.compareTo(s2);
}
});
ts.addAll(hm.keySet());
请注意,如果所比较的字符串对的长度
相同,则还必须比较它们的词典顺序,否则树集
将只包含长度不同的字符串
(即“a”或“a”不会添加到集合中)
对LinkedHashMap进行排序
边走边学Java(Python背景)。简单的单词计数程序在Java7代码(不能用J8!)。 我有一个单词的哈希图:计数对。现在我需要按计数(递减顺序)排序,并打破按字母顺序使用word的联系。 我正在寻找对这个想法的反馈: 遍历HashMap中的映射项(me) 使用me.getkey=K和me.getvalue=v new map.entry reverse_me=(V,K){不确定此语法} 将r
问题内容: 你好,我需要实现一个接收HashMap并按键对它的值进行排序(mergeSort)的方法 (不使用TreeMap,SortedMap或Collections.Sort或使用JAVA Packages中的任何排序解决方案) 。我的问题是处理通配符类型…这是我的实现(由于使用通配符而返回编译错误) 我感谢您的帮助! 问题答案: 像其他评论者一样,我建议您阅读Java中的泛型主题。您在合并中
问题内容: 该中应该是未排序,但被相对于分类。 我遇到了这个问题,因为我需要插入顺序数据。因此,我改用了。但是我还是很困惑为什么要对它进行排序。 有人可以解释吗? 我做了一个简单的例子来查看排序。 结果: 编辑: 我试图插入使用50支随机数的,我发现了一些数据未排序。但是,它仍然设法对大多数整数进行排序。 随机结果: 问题答案: 这是一个巧合(不是真的,而是与哈希算法有关)。 尝试添加 最后。 输
问题内容: 我试图根据键中的日期对此HashMap进行排序 我的哈希图: 问题答案: 使用代替。正如已经实现的那样,它将在插入时自动排序。 或者,如果您有一个现有的并且想要基于它创建一个,则将其传递给构造函数: 也可以看看: Java教程-地图实现 Java教程-对象排序
编辑:对于同样的问题,我尝试编写一个比较器。但它不起作用