List<map>转成list
时间: 2023-12-08 15:06:51 浏览: 46
假设你的List中的每个元素都是一个Map,你可以使用Java 8的stream和flatMap方法将它们转换为一个List。这里是一个示例代码:
```
List<Map<String, Object>> list = new ArrayList<>();
list.add(new HashMap<>());
list.add(new HashMap<>());
list.add(new HashMap<>());
List<Object> result = list.stream()
.flatMap(map -> map.values().stream())
.collect(Collectors.toList());
```
在这个示例中,我们首先创建了一个包含三个空Map的List。然后,我们使用stream方法将其转换为一个流。接下来,我们使用flatMap方法将每个Map中的值转换为一个单独的流。最后,我们使用collect方法将所有值收集到一个新的List中。
需要注意的是,这个示例中我们使用了Object类型来存储所有的值,如果你的Map中的值类型不同,你需要将collect方法中的参数类型改为相应的类型。
相关问题
Stream将list<map>转成list<Map<String,Object>>并排序
可以按照以下步骤将list<map>转成list<Map<String,Object>>并排序:
1. 遍历list<map>,将每个map转成Map<String,Object>类型,并添加到新的List中。可以使用Java8的Stream API来实现,代码如下:
```
List<Map<String, Object>> newList = oldList.stream()
.map(map -> new HashMap<String, Object>(map))
.collect(Collectors.toList());
```
2. 使用Collections.sort()方法对新的List进行排序。可以自定义Comparator来指定排序规则,比如按照某个键值的大小进行排序。代码如下:
```
Collections.sort(newList, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
// 比较规则,比如按照键值为"age"的大小进行排序
return Integer.compare((int) o1.get("age"), (int) o2.get("age"));
}
});
```
注意,这里我假设每个map中都包含一个名为"age"的整型键值,你需要根据实际情况来修改比较规则。
java List<Map<String,String>> 转成 List<Map>
你可以使用Java的原生类型推断来实现List<Map<String, String>>转为List<Map>。在Java 7之后,你可以使用菱形语法来简化泛型类型的定义。下面是一个示例代码:
```java
List<Map<String, String>> originalList = new ArrayList<>();
// 假设originalList已经包含了一些数据
// 使用原生类型推断,将List<Map<String, String>>转为List<Map>
List<Map> newList = new ArrayList<>(originalList);
```
请注意,这种转换会导致Map中的值丢失其具体的数据类型,因为Map的值类型被擦除为Object。如果你需要保留具体的数据类型,可以考虑使用更具体的泛型类型,如List<Map<String, Object>>来代替List<Map>。
阅读全文