美文网首页
【TreeMap】对Map按key和value分别排序

【TreeMap】对Map按key和value分别排序

作者: jackLee | 来源:发表于2016-10-25 16:19 被阅读932次

使用TreeMap可以对key 和Value进行排序

Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。
** TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。**
HashMap的值是没有顺序的,它是按照key的HashCode来实现的,对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeMap的value排序。

对key值进行排序的代码:
<pre>
import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class TreeMapTest {
public static void main(String[] args) {
Map<String, String> map = new TreeMap<String, String>(
new Comparator<String>() {
public int compare(String obj1, String obj2) {
// 降序排序
return obj2.compareTo(obj1);
}
});
map.put("b", "ccccc");
map.put("d", "aaaaa");
map.put("c", "bbbbb");
map.put("a", "ddddd");

Set<String> keySet = map.keySet();
Iterator<String> iter = keySet.iterator();
while (iter.hasNext()) {
String key = iter.next();
System.out.println(key + ":" + map.get(key));
}
}
}
</pre>
输出为:
d:aaaaa
c:bbbbb
b:ccccc
a:ddddd

对value进行排序
<pre>
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

public class TreeMapTest {
public static void main(String[] args) {
Map<String, String> map = new TreeMap<String, String>();
map.put("a", "ddddd");
map.put("c", "bbbbb");
map.put("d", "aaaaa");
map.put("b", "ccccc");

//这里将map.entrySet()转换成list
List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());
//然后通过比较器来实现排序
Collections.sort(list,new Comparator<Map.Entry<String,String>>() {
//升序排序
public int compare(Entry<String, String> o1,
Entry<String, String> o2) {
return o1.getValue().compareTo(o2.getValue());
}

});

for(Map.Entry<String,String> mapping:list){
System.out.println(mapping.getKey()+":"+mapping.getValue());
}
}
}
</pre>

输出为:

d:aaaaa
c:bbbbb
b:ccccc
a:ddddd

参考文档:

对Map按key和value分别排序

相关文章

  • 【TreeMap】对Map按key和value分别排序

    使用TreeMap可以对key 和Value进行排序 Map是键值对的集合接口,它的实现类主要包括:HashMap...

  • lambda HashMap 排序

    TreeMap 按key排序生成map可以有TreeMap 完成,TreeMap可以按key的自然顺序排序(Com...

  • Java Map 按key排序和按Value排序

    title: Java Map 按key排序和按Value排序date: 2016/8/31 15:24:13ta...

  • map按key和按value排序

    看一个题:查找和排序题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列...

  • 按照Value对HashMap排序

    TreeMap基于红黑树排序的算法,默认数据put进来按照key的大小升序排序,如果需要改成按value排序,则自...

  • Python dict排序

    sorted 函数按key值对字典排序 sorted 函数按value值对字典排序 字典列表排序

  • TreeMap 源码分析

    前言 TreeMap作为可以对key或value进行大小排序的map,我们在开发中也会经常的用到,譬如说加密一串字...

  • 集合

    1、map,hashmap排列没顺序,treemap可对key进行排序,linkedhashmap按照放入的顺序。

  • python 常用操作记录

    python 列表及字典(按key、按value排序) python dict按照key 排序:1、method ...

  • TreeMap 源码分析

    TreeMap实现了SortedMap接口,可以根据k的大小顺序,对map中的元素进行排序,可以根据key的自然顺...

网友评论

      本文标题:【TreeMap】对Map按key和value分别排序

      本文链接:https://www.haomeiwen.com/subject/dsiruttx.html