在编程的过程中,有时会遇到需要对MAP集合进行排序的现象,比如像下面这种情况:
List<Map<String,Object>> l = new ArrayList<Map<String,Object>>();
Map<String, Object> ma = new HashMap<String,Object>();
ma.put("num", 22);
ma.put("cc", "cc");
l.add(ma);
ma = new HashMap<String,Object>();
ma.put("num", 33);
ma.put("cc", "dd");
l.add(ma);
现在需要对集合L中的MAP对象按KEY值‘num'的大小进行排序,经查,现有的API中的Collections.sort方法不支持MAP类的集合排序,怎么办呢,自己写个排序类,实现Comparator接口的compare方法即可,简单的CODE如下:
class SortMap implements Comparator{
private String sortName = null;
private String compareType = "int";
public SortMap(String sortName,String compareType){
this.sortName = sortName;
this.compareType = compareType;
}
@Override
public int compare(Object o1, Object o2) {
Map m1 = (Map)o1;
Map m2 = (Map)o2;
if(compareType.equalsIgnoreCase("int")){
Integer ia = (Integer)m1.get(sortName);
Integer ib = (Integer)m2.get(sortName);
return ia.compareTo(ib);
}else{
String ia = (String)m1.get(sortName);
String ib = (String)m2.get(sortName);
return ia.compareTo(ib);
}
}
}
好了,我们再来写个测试类,
public class TestMapSort<T> {
@SuppressWarnings("unchecked")
public void sort(){
List<Map<String,Object>> l = new ArrayList<Map<String,Object>>();
Map<String, Object> ma = new HashMap<String,Object>();
ma.put("num", 22);
ma.put("cc", "cc");
l.add(ma);
ma = new HashMap<String,Object>();
ma.put("num", 33);
ma.put("cc", "dd");
l.add(ma);
ma = new HashMap<String,Object>();
ma.put("num", 11);
ma.put("cc", "aaa");
l.add(ma);
ma = new HashMap<String,Object>();
ma.put("num", 10);
ma.put("cc", "bbbb");
l.add(ma);
SortMap sm = new SortMap("num","int");
Collections.sort(l,sm);
for(Map<String,Object> m : l){
System.out.println("---------each map-----------");
Set<Map.Entry<String, Object>> st = m.entrySet();
for(Entry<String, Object> entry : st){
System.out.print("key: "+entry.getKey() +" ");
System.out.println(entry.getValue());
}
}
}
public static void main(String[] arg){
TestMapSort ts = new TestMapSort();
ts.sort();
}
}
运行结果如下:
---------each map-----------
key: num 10
key: cc bbbb
---------each map-----------
key: num 11
key: cc aaa
---------each map-----------
key: num 22
key: cc cc
---------each map-----------
key: num 33
key: cc dd
分享到:
相关推荐
Map中元素存放是无序的 HashMap注意事项: 1,HashMap底层维护一个数组,我们向HashMap中所放置的对象实际上是存储在该数组当中; 2,当向HashMap中put一对键值时,它会根据key的hashCode值计算出一个位置,该位置...
主要实现Java中Map集合按值排序的几种方法。
这里有几个很经典的Java map 集合排序的例子,大家可以试试
private static SortedMap, Integer> mapSortByKey(Map, Integer> unsort_map) { TreeMap, Integer> result = new TreeMap, Integer>() Object[] unsort_key = unsort_map.keySet().toArray(); Arrays.sort...
Activity 间intent传递有序排序的map集合 intent传递map排序
map集合的特性和它的遍历方式 还有一个根据Set特性的一个排序 以及IO流 字节流和字符流实现代码
List<map>,List<Map, Object>>,多字段组合排序。提供一个简易的思路,如果需要进行参考。
Java集合排序及java集合类详解(Collection、List、Map、Set).doc
Java集合排序及java集合类详解,对list,set,map等java集合进行详细讲解
Java 集合排序及java 集合类详解 Java 集合排序及java 集合类详解,Java里面最重要、最常用也就是集合那部分了,能够用好集合和理解好集合对于做Java程序的开发拥有无比的好处。本教程详细解释了关于Java中的集合是...
主要介绍了java如何对map进行排序,java map集合的使用详解,大家可以参考使用
Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。这篇文章主要介绍了Java Map 按照Value排序的实现方法,需要的朋友可以参考下
Java集合排序及java集合类详解(Collection、List、Map、Set)
Java集合排序及java集合类详解(Collection、List、Map、Set
要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode
下面小编就为大家带来一篇java的Map集合中按value值进行排序输出的实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java集合排序及java集合类详解(Collection、List、Map、Set).pdf