JAVA中对List<map<String,Object>>根据map某个key值或者value值进行排

方法
compareTo()
比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
返回整数,1,-1,0;返回1表示大于,返回-1表示小于,返回0表示相等。

  1. public class java_ListMapSort {
  2. public static void main(String[] args) {
  3. List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  4. Map<String, Object> map1 = new HashMap<String, Object>();
  5. map1.put("name", "p");
  6. map1.put("cj", "5");
  7. Map<String, Object> map2 = new HashMap<String, Object>();
  8. map2.put("name", "h");
  9. map2.put("cj", "12");
  10. Map<String, Object> map3 = new HashMap<String, Object>();
  11. map3.put("name", "f");
  12. map3.put("cj", "31");
  13. list.add(map1);
  14. list.add(map3);
  15. list.add(map2);
  16. //排序前
  17. for (Map<String, Object> map : list) {
  18. System.out.println(map.get("cj"));
  19. }
  20. Collections.sort(list, new Comparator<Map<String, Object>>() {
  21. public int compare(Map<String, Object> o1, Map<String, Object> o2) {
  22. Integer name1 = Integer.valueOf(o1.get("cj").toString()) ;//name1是从你list里面拿出来的一个
  23. Integer name2 = Integer.valueOf(o2.get("cj").toString()) ; //name1是从你list里面拿出来的第二个name
  24. return name1.compareTo(name2);
  25. }
  26. });
  27. //List排序后
  28. System.out.println("List排序后-------------------");
  29. for (Map<String, Object> map : list) {
  30. System.out.println(map.get("cj"));
  31. }
  32. //数组的用Arrays.sort
  33. List<Map> listArray = new ArrayList<Map>();
  34. listArray.add(map1);
  35. listArray.add(map3);
  36. listArray.add(map2);
  37. Map[] maps=new Map[listArray.size()] ;
  38. listArray.toArray(maps);
  39. Arrays.sort(maps, new Comparator<Map>(){
  40. public int compare(Map o1, Map o2) {
  41. Integer name1 = Integer.valueOf(o1.get("cj").toString());//name1是从你list里面拿出来的一个
  42. Integer name2 = Integer.valueOf(o2.get("cj").toString()); //name2是从你list里面拿出来的第二个name
  43. return name1.compareTo(name2);
  44. }
  45. });
  46. //lambda表达式
  47. // Arrays.sort(maps, (o1,o2) ->{
  48. // Integer name1 = Integer.valueOf(o1.get("cj").toString()) ;
  49. //name1是从你list里面拿出来的一个
  50. //Integer name2 = Integer.valueOf(o2.get("cj").toString()) ;
  51. //name2是从你list里面拿出来的第二个name
  52. // return name1.compareTo(name2);
  53. //});
  54. //数组排序后
  55. System.out.println("数组排序后-------------------");
  56. for (Map<String, Object> map : list) {
  57. System.out.println(map.get("cj"));
  58. }
  59. }
  60. }