JAVA中对List<map<String,Object>>根据map某个key值进行排序
2017-11-01 21:09
1031 查看
方法 compareTo() 比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。 返回整数,1,-1,0;返回1表示大于,返回-1表示小于,返回0表示相等。 普通的Integer 类型key进行比较:
public class java_ListMapSort { public static void main(String[] args) { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map1 = new HashMap<String, Object>(); map1.put("name", "p"); map1.put("cj", "5"); Map<String, Object> map2 = new HashMap<String, Object>(); map2.put("name", "h"); map2.put("cj", "12"); Map<String, Object> map3 = new HashMap<String, Object>(); map3.put("name", "f"); map3.put("cj", "31"); list.add(map1); list.add(map3); list.add(map2); //排序前 for (Map<String, Object> map : list) { System.out.println(map.get("cj")); } Collections.sort(list, new Comparator<Map<String, Object>>() { public int compare(Map<String, Object> o1, Map<String, Object> o2) { Integer name1 = Integer.valueOf(o1.get("cj").toString()) ;//name1是从你list里面拿出来的一个 Integer name2 = Integer.valueOf(o2.get("cj").toString()) ; //name1是从你list里面拿出来的第二个name return name1.compareTo(name2); } }); //排序后 System.out.println("-------------------"); for (Map<String, Object> map : list) { System.out.println(map.get("cj")); } } }
中文字符比较:
要实现汉字按首字母排序,主要是设置语言环境,如下语句设置语言环境:
这里用到了Collator类,此类实现了Comparator接口,用他的getInstance就可以用指定的语言环境来构造一个Collator对象:
然后用如下语句创建Comparator:
[java] view plain copy
Comparator<Object> com=Collator.getInstance(java.util.Locale.CHINA);
要注意的是Comparator里面的泛型类型一定要是Object类型,因为Collator类实现的Comparator接口里面传入的对象是Object:
完整的实现代码如下:
[java] view plain copy
import java.text.Collator;
import java.util.*;
import java.util.Comparator;
public class cpm {
public static void main(String[] args) {
// TODO Auto-generated method stub
Comparator<Object> com=Collator.getInstance(java.util.Locale.CHINA);
String[] newArray={"中山","汕头","广州","安庆","阳江","南京","武汉","北京","安阳","北方"};
List<String> list = Arrays.asList(newArray);
Collections.sort(list, com);
for(String i:list){
System.out.print(i+" ");
}
}
}
输出结果是:
安庆 安阳 北方 北京 广州 南京 汕头 武汉 阳江 中山
实例2:
List<Map<String,Object>> list = new ArrayList<>(); List<GroupItemUser> groupItemUserLists = groupItemUserRepository.findAllByAgencyId(agencyId); Iterator<GroupItemUser> iterator = groupItemUserLists.iterator(); for (; iterator.hasNext();) { GroupItemUser groupItemUser = (GroupItemUser) iterator.next(); Long userId = groupItemUser.userId(); SysUser sysUser = sysUserRepository.findOne(userId); String name = sysUser.name(); Map<String, Object> map = new HashMap<>(); map.put("id", userId); map.put("name", name); list.add(map); } //将List集合按照Map的name进行排序(a>b>c ...) if(CollectionUtils.isNotEmpty(list)){ Collections.sort(list,new Comparator<Map<String,Object>>() { @Override public int compare(Map<String,Object> o1, Map<String,Object> o2) { Collator instance = Collator.getInstance(Locale.CHINA); return instance.compare(o1.get("name").toString(), o2.get("name").toString()); } }); } return list;
相关文章推荐
- JAVA中对List<Map<String,Object>>中的中文汉字进行排序
- List<Map<String, Object>> 不同key值进行排序备忘
- JAVA中对List<Map<String,Object>>中的中文汉字进行排序
- JAVA遍历List<Map<String,Object>> 如何根据List中Map的Value的值进行遍历
- List<Map<String,Object>>集合根据map里面的一个字段排序
- 将Map<String, List<Map<String,Object>>>进行排序
- java中对List<Map<String,Object>>中的中文汉字排序
- java中list<Object[]>、list<Student>、list<Map<String,String>>排序
- java list<Map<String,Object>>排序
- Java中list<Object[]>、list<Student>、list<Map<String,String>>排序
- 自定义规则,对List<Map<String,Object>> List<Object>进行排序
- Java对List<Map<String,Object>>中的参数中文排序 包含特殊符号
- java中对List<Map<String,Object>>中的中文汉字排序
- 对List<Map<String,Object>>进行排序
- java list<Map<String,Object>>排序
- List<Map<String,Object>>集合根据map里面的一个字段排序
- List<Map<String,Object>>集合根据map里面的一个字段排序
- JAVA对LIST<Map<String,Object>>的排序
- List<Map>集合根据Map里某个key对List集合重新排序介绍
- List<Map<String,Object>>排序