Java8 Stream Stream List<JSONObject> is sorted by a certain property

//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<object>
1. First, you need list.parallelStream().sorted for stream processing. Using parallelStream can fully schedule multi-core CPUs.
2. Use Comparator.comparing for sorting, reversed() for reverse sorting, thenComparing for next sorting.
3. The content in Comparator.comparing() is also Object::getter, such as Test::getName
4. The final format is .collect(Collectors.toList()), and Map is .collect(Collectors .toMap(Test::getKey, Test::getValue))
 

Test::getValue))
list = list.parallelStream().sorted(
		Comparator.comparing(Test::getAllCounter).reversed().thenComparing(Test::getKeyword)
).collect(Collectors.toList());

Guess you like

Origin blog.csdn.net/zlfjavahome/article/details/131603026