Java8 Stream流List<JSONObject>通过某一属性进行排序
//List<JSONObject>排序 List <JSONObject> list = new ArrayList<>(); /*排序 下面 需要满足JDK1.8及以上*/ list.sort(Comparator.comparing(x -> x.getInteger("update_time")));//正常排序 list.stream().sorted(Comparator.comparing(x -> x.getString("update_time"))).collect(Collectors.toList()); //按更新时间倒序 list.sort(Comparator.comparing(obj -> ((JSONObject) obj).getInteger("update_time")).reversed()); /*返回一个map集合,key代表组名,value代表该组中的数据,做分组*/ Map<String, List<JSONObject>> map = list.stream().collect(Collectors.groupingBy(x -> x.getString("test"))); List<JSONObject> lists = map .keySet().stream().map(key -> { JSONObject Object= new JSONObject(true); Object.put("key",key); Object.put("value",value); System.out.println(Object); return Object; }).collect(Collectors.toList()); /*排序*/ lists .sort(Comparator.comparing(x -> x.getString("test")));
List<对象> 1.首先你需要list.parallelStream().sorted 进行流处理,使用parallelStream可以充分调度多核CPU。 2.使用Comparator.comparing进行排序,reversed()进行倒序排列,thenComparing进行下一个排序。 3.Comparator.comparing()里面的内容,也是就是Object::getter,例如Test::getName 4.最后格式化为需要的格式 List 是.collect(Collectors.toList()) , Map 是.collect(Collectors.toMap(Test::getKey, Test::getValue))
Test::getValue)) list = list.parallelStream().sorted( Comparator.comparing(Test::getAllCounter).reversed().thenComparing(Test::getKeyword) ).collect(Collectors.toList());
下一篇:
java中switch语句用法详解