本篇内容介绍了“java中的map能不能根据key排序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

我们提供的服务有:网站建设、成都网站设计、微信公众号开发、网站优化、网站认证、岱山ssl等。为上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的岱山网站制作公司
java中map常用排序方式:按键排序(sort by key), 按值排序(sort by value)。
1、按键排序
jdk内置的java.util包下的TreeMap
默认升序排序方法:
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class TEST {
public static void main(String[] args) {
TEST t = new TEST();
t.sort();
}
public void sort(){
Map treeMap = new TreeMap();
treeMap.put("c", "ccccc");
treeMap.put("a", "aaaaa");
treeMap.put("b", "bbbbb");
treeMap.put("d", "ddddd");
Set s = treeMap.keySet();
for (String key : s) {
System.out.println(key+" : "+treeMap.get(key));
}
}
} 输出结果:
a : aaaaa
b : bbbbb
c : ccccc
d : ddddd
2、按值排序
按值排序就相对麻烦些了,貌似没有直接可用的数据结构能处理类似需求,需要我们自己转换一下。
Map本身按值排序是很有意义的,很多场合下都会遇到类似需求,可以认为其值是定义的某种规则或者权重。
原理:将待排序Map中的所有元素置于一个列表中,接着使用Collections的一个静态方法 sort(List
来排序列表,同样是用比较器定义比较规则。排序后的列表中的元素再依次装入Map,为了肯定的保证Map中元素与排序后的List中的元素的顺序一致,使用了LinkedHashMap数据类型。
实现代码
public class MapSortDemo {
public static void main(String[] args) {
Map map = new TreeMap();
map.put("KFC", "kfc");
map.put("WNBA", "wnba");
map.put("NBA", "nba");
map.put("CBA", "cba");
Map resultMap = sortMapByKey(map); //按Key进行排序
// Map resultMap = sortMapByValue(map); //按Value进行排序
for (Map.Entry entry : resultMap.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
/**
* 使用 Map按value进行排序
* @param map
* @return
*/
public static Map sortMapByValue(Map oriMap) {
if (oriMap == null || oriMap.isEmpty()) {
return null;
}
Map sortedMap = new LinkedHashMap();
List> entryList = new ArrayList>(
oriMap.entrySet());
Collections.sort(entryList, new MapValueComparator());
Iterator> iter = entryList.iterator();
Map.Entry tmpEntry = null;
while (iter.hasNext()) {
tmpEntry = iter.next();
sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
}
return sortedMap;
}
} “java中的map能不能根据key排序”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
本文题目:java中的map能不能根据key排序
文章位置:http://www.jxjierui.cn/article/gdgcph.html


咨询
建站咨询
