我以为HashMap是无序的,并且当遍历键时,您不知道命令的顺序是什么?在此示例中,看起来地图已经按键号排序:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) {
String[] words = {"Car", "Cat" ,"Hello", "World", "Hi", "Bye", "Dog", "Be"};
Map<Integer, ArrayList<String>> map = new HashMap<Integer, ArrayList<String>>();
for (String word: words) {
Integer len = word.length();
List<String> l = map.get(len);
if (l == null) {
l = new ArrayList<String>();
l.add(word);
map.put(len, (ArrayList<String>) l);
}
else {
if (! l.contains(word))
l.add(word);
}
}
System.out.println(map);
}
}
输出:
{2=[Hi, Be], 3=[Car, Cat, Bye, Dog], 5=[Hello, World]}
是的,但不能保证维持该顺序。
来自Hashmap文档
此类 无法保证 地图的顺序。特别是,它不能保证顺序 会随着时间的推移保持恒定 。
您的基准还不足以决定它。
查看TreeMap是否需要排序顺序
根据地图的键的自然顺序或在地图创建时提供的Comparator来对地图进行排序,具体取决于所使用的构造函数
问题内容: 你好,我需要实现一个接收HashMap并按键对它的值进行排序(mergeSort)的方法 (不使用TreeMap,SortedMap或Collections.Sort或使用JAVA Packages中的任何排序解决方案) 。我的问题是处理通配符类型…这是我的实现(由于使用通配符而返回编译错误) 我感谢您的帮助! 问题答案: 像其他评论者一样,我建议您阅读Java中的泛型主题。您在合并中
我有一个HashMap与作为关键和一个值作为价值。 我的目标是通过降序值对Hashmap进行排序。应在
考虑下面的哈希图: 具有诸如 我需要按值对hashmap进行降序排序,但如果值相等,则按键进行升序排序: 到目前为止,我试着分别按键排序,然后按值排序,但我不相信这种方法。除了创建更多的hashmaps之外,还有什么好方法呢?
问题内容: 我需要根据存储在其中的值对我进行排序。在包含存储在手机联系人的名字。 另外,我还要求在对值进行排序时对键进行自动排序,否则你可以说键和值绑定在一起,因此值的任何更改都应反映在键中。 要求的输出: 问题答案: 尝试下面的代码对我来说很好。你可以选择升序和降序 编辑:版本2 使用了新的Java功能,例如流for-each等 如果值相同,则地图将按键排序
我有一个<code>HashMap 有没有比排序HashMap更好的解决方案,然后使用 顺便说一句,我一开始并不一定要使用HashMap,但值设置了顺序,我不想交换键和值,因为浮点值可能会改变好几次。
问题内容: 我在Java中具有以下哈希图: 我应该如何对哈希图进行排序,以便考虑字母和数字? 生成的哈希图应如下所示: 感谢帮助! 问题答案: 使用排序: 它将自动放置按键排序的条目。我认为自然排序适合你的情况。 注意,由于查找优化,不会保留顺序。