Java中,List与Map之间相互转换?
时间: 2023-12-03 08:44:07 浏览: 213
在Java中,可以使用以下方法将List转换为Map:
1. 使用for循环遍历List,将List中的元素逐一添加到Map中。需要注意的是,需要为Map指定一个key,可以使用List中的某个属性作为key。
```java
List<MyClass> list = new ArrayList<MyClass>();
Map<Integer, MyClass> map = new HashMap<Integer, MyClass>();
for (MyClass obj : list) {
map.put(obj.getId(), obj);
}
```
2. 使用Java 8的Stream API,将List转换为Map。需要使用Collectors.toMap()方法,该方法接受一个Function作为key的映射函数,和一个Function作为value的映射函数。
```java
List<MyClass> list = new ArrayList<MyClass>();
Map<Integer, MyClass> map = list.stream().collect(Collectors.toMap(MyClass::getId, Function.identity()));
```
而将Map转换为List,则可以使用以下方法:
1. 使用for循环遍历Map,将Map中的value逐一添加到List中。
```java
Map<Integer, MyClass> map = new HashMap<Integer, MyClass>();
List<MyClass> list = new ArrayList<MyClass>();
for (Map.Entry<Integer, MyClass> entry : map.entrySet()) {
list.add(entry.getValue());
}
```
2. 使用Java 8的Stream API,将Map转换为List。需要使用Map.entrySet()方法获取Map中的所有键值对,并使用Stream.map()方法将value映射为List中的元素。
```java
Map<Integer, MyClass> map = new HashMap<Integer, MyClass>();
List<MyClass> list = map.entrySet().stream().map(Map.Entry::getValue).collect(Collectors.toList());
```
阅读全文