模拟数据如下
[{"name":"如花","id":6,"age":16,"height":1.68},{"name":"刘一","id":1,"age":28,"height":1.92},{"name":"张三","id":3,"age":18,"height":1.75},{"name":"李四","id":5,"age":23,"height":1.65},{"name":"陈二","id":2,"age":18,"height":1.72},{"name":"李四","id":4,"age":21,"height":1.75}]
/**
* 模拟数据
* @return
* @apiNote
* id: 数据库主键id
* name: 姓名(String)
* age: 年龄(int)
* height: 身高(BigDecimal)单位米
*/
private List<Map<String, Object>> getMyData(){
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> m1 = new HashMap<>();
m1.put("id", 1);
m1.put("name", "刘一");
m1.put("age", 28);
m1.put("height", new BigDecimal("1.92"));
Map<String, Object> m2 = new HashMap<>();
m2.put("id", 2);
m2.put("name", "陈二");
m2.put("age", 18);
m2.put("height", new BigDecimal("1.72"));
Map<String, Object> m3 = new HashMap<>();
m3.put("id", 3);
m3.put("name", "张三");
m3.put("age", 18);
m3.put("height", new BigDecimal("1.75"));
Map<String, Object> m4 = new HashMap<>();
m4.put("id", 4);
m4.put("name", "李四");
m4.put("age", 21);
m4.put("height", new BigDecimal("1.75"));
Map<String, Object> m5 = new HashMap<>();
m5.put("id", 5);
m5.put("name", "王五");
m5.put("age", 23);
m5.put("height", new BigDecimal("1.65"));
Map<String, Object> m6 = new HashMap<>();
m6.put("id", 6);
m6.put("name", "如花");
m6.put("age", 16);
m6.put("height", new BigDecimal("1.68"));
list.add(m6);
list.add(m1);
list.add(m3);
list.add(m5);
list.add(m2);
list.add(m4);
return list;
}
BigDecimal 排序
执行如下代码
public static void main(String[] args) {
List<Map<String, Object>> studentList = getMyData();
// 按身高升序
List<Map<String, Object>> sortedByHeightAscList = studentList.stream().sorted(Comparator.comparing(h -> ((BigDecimal) h.get("height")))).collect(Collectors.toList());
sortedByHeightAscList.stream().forEach(item -> {
System.out.println(item.get("name") + "的身高:" + item.get("height"));
});
System.out.println();
// 按身高降序
List<Map<String, Object>> sortedByHeightDescList = studentList.stream().sorted((h1, h2) -> ((BigDecimal)h2.get("height")).compareTo((BigDecimal)h1.get("height"))).collect(Collectors.toList());
sortedByHeightDescList.stream().forEach(item -> {
System.out.println(item.get("name") + "的身高:" + item.get("height"));
});
}
身高【升序】排列结果
王五的身高:1.65
如花的身高:1.68
陈二的身高:1.72
张三的身高:1.75
李四的身高:1.75
刘一的身高:1.92
身高【降序】排列结果
刘一的身高:1.92
张三的身高:1.75
李四的身高:1.75
陈二的身高:1.72
如花的身高:1.68
王五的身高:1.65
String 排序
按名称升序
输出结果
刘一
如花
张三
李四
王五
陈二
按名称降序
输出结果
陈二
王五
李四
张三
如花
刘一