如何在Java中按键对Map值进行排序?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在Java中按键对Map值进行排序?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1534字,纯文字阅读大概需要3分钟。
内容图文
![如何在Java中按键对Map值进行排序?](/upload/InfoBanner/zyjiaocheng/717/7917188c9080423e95a57e471a43b763.jpg)
我有一个Map,它包含键和值的字符串.
数据如下:
“question1”, “1”
“question9”, “1”
“question2”, “4”
“question5”, “2”
我想根据其键对地图进行排序.所以,最后,我会有问题1,问题2,问题3 ……等等.
最终,我试图从这个Map中获取两个字符串.
>第一个字符串:问题(按顺序1.10)
>第二个字符串:答案(与问题的顺序相同)
现在我有以下内容:
Iterator it = paramMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry) it.next();
questionAnswers += pairs.getKey() + ",";
}
这让我得到一个字符串中的问题,但他们不是有序的.
解决方法:
简短的回答
使用TreeMap.这正是它的用途.
如果将此地图传递给您并且您无法确定类型,则可以执行以下操作:
SortedSet<String> keys = new TreeSet<>(map.keySet());
for (String key : keys) {
String value = map.get(key);
// do something
}
这将按照键的自然顺序遍历地图.
更长的答案
从技术上讲,你可以使用任何实现SortedMap的东西,但除了罕见的情况,这相当于TreeMap,就像使用Map实现通常相当于HashMap一样.
对于您的键是一个复杂类型而没有实现Comparable或者您不想使用自然顺序的情况,TreeMap和TreeSet有额外的构造函数可以让您传入Comparator:
// placed inline for the demonstration, but doesn't have to be a lambda expression
Comparator<Foo> comparator = (Foo o1, Foo o2) -> {
...
}
SortedSet<Foo> keys = new TreeSet<>(comparator);
keys.addAll(map.keySet());
请记住,使用TreeMap或TreeSet时,它将具有与HashMap或HashSet不同的性能特征.粗略地说,找到或插入元素的操作将从O(1)变为O(Log(N)).
在HashMap中,从1000个项目移动到10,000个项目并不会影响您查找元素的时间,但对于TreeMap,查找时间将慢大约3倍(假设为Log2).对于每个元素查找,从1000移动到100,000将大约慢6倍.
内容总结
以上是互联网集市为您收集整理的如何在Java中按键对Map值进行排序?全部内容,希望文章能够帮你解决如何在Java中按键对Map值进行排序?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。