java List<HrOrgUnit> hrOrgUnitList 转换为id为key,HrOrgUnit为value的map
时间: 2024-02-12 15:09:13 浏览: 14
可以使用Java 8的Stream API来实现将List<HrOrgUnit>转换为以id为key,HrOrgUnit为value的Map。具体代码如下所示:
```
Map<Long, HrOrgUnit> hrOrgUnitMap = hrOrgUnitList.stream()
.collect(Collectors.toMap(HrOrgUnit::getId, Function.identity()));
```
这里使用了`Collectors.toMap()`方法,第一个参数传入了获取key的Lambda表达式,即`HrOrgUnit::getId`,第二个参数传入了获取value的Lambda表达式,即`Function.identity()`,它表示直接返回元素本身作为value。最终返回的是一个Map<Long, HrOrgUnit>类型的对象,其中Long是id的类型。
相关问题
java List<String>转map,key为下标
可以使用Java 8中的Stream API和Collectors.toMap()方法将List<String>转换为Map<Integer, String>,其中Integer为下标,String为List中的元素。
代码示例:
```
List<String> list = Arrays.asList("a", "b", "c", "d");
Map<Integer, String> map = IntStream.range(0, list.size())
.boxed()
.collect(Collectors.toMap(Function.identity(), list::get));
```
解释一下上面的代码:
- IntStream.range(0, list.size())会生成一个从0到list.size()-1的整数流。
- .boxed()将IntStream转换为一个Stream<Integer>。
- Collectors.toMap(Function.identity(), list::get)将Stream<Integer>转换为Map<Integer, String>,其中key为元素的下标,value为List中的元素。其中Function.identity()方法返回一个恒等函数,其作用是返回输入的对象本身。
注意事项:
- 如果List中有重复的元素,则会抛出IllegalStateException异常。
- 如果想要在转换过程中处理重复的键,可以使用Collectors.toMap()方法的第三个参数来指定处理冲突的方式。
Map<key,value> 根据 List<key> 生成List<value> java
可以使用Java8的Stream API来实现该功能,具体代码如下:
```java
List<Key> keys = Arrays.asList(key1, key2, key3); // 假设已经有 List<Key>
Map<Key, Value> map = new HashMap<>(); // 假设已经有 Map<Key, Value>
List<Value> values = keys.stream()
.map(map::get)
.collect(Collectors.toList());
```
上述代码中,首先将输入的 `List<Key>` 转换为一个 Stream,然后使用 `map()` 方法将每个 Key 映射为其对应的 Value,最后使用 `collect()` 方法将所有 Value 收集到一个新的 List 中。其中,`map::get` 表示将每个 Key 作为参数传递给 `map.get()` 方法,使用 `::` 符号可以将方法引用转换为函数式接口。