使用stream流对List<Map<String,Object>>进行排序
时间: 2023-10-14 11:07:51 浏览: 38
可以使用Java 8中的Lambda表达式和Comparator来对List<Map<String,Object>>进行排序。
假设我们有一个List<Map<String,Object>>,其中每个Map表示一个对象,可以按照Map中某个键的值进行排序。假设我们要按照Map中键为"name"的值进行排序,可以按照以下步骤进行。
1. 使用Stream流将List转换为一个流。
2. 使用sorted方法,并在其中传入一个Comparator对象来进行排序。Comparator对象可以使用Lambda表达式来实现。
3. 在Lambda表达式中,使用get方法获取Map中键为"name"的值,并使用compareTo方法进行比较。注意,如果Map中键为"name"的值是字符串,则应该使用compareTo方法进行比较,如果是数字,则应该使用compare方法进行比较。
示例代码如下:
```
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("name", "Tom");
map1.put("age", 20);
list.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("name", "Jerry");
map2.put("age", 25);
list.add(map2);
Map<String, Object> map3 = new HashMap<>();
map3.put("name", "Alice");
map3.put("age", 22);
list.add(map3);
// 按照"name"的值进行排序
list.sort((m1, m2) -> ((String) m1.get("name")).compareTo((String) m2.get("name")));
// 输出排序后的结果
list.forEach(System.out::println);
```
输出结果如下:
```
{name=Alice, age=22}
{name=Jerry, age=25}
{name=Tom, age=20}
```