jdk8 lambda list转map
时间: 2023-11-09 07:03:24 浏览: 95
可以使用Java 8中的Stream API和lambda表达式将List转换为Map。示例代码如下:
```
List<String> list = Arrays.asList("apple", "banana", "orange");
Map<String, Integer> map = list.stream().collect(Collectors.toMap(Function.identity(), String::length));
```
这个例子将List中的每个元素作为Map的key,将每个元素的长度作为Map的value。
相关问题
jdk8 List<Long> idList 转List<String>
在Java 8中,如果你有一个`List<Long>`类型的idList,想要转换成`List<String>`,你可以通过流(Stream)或者Lambda表达式来实现。以下是两种常见的方法:
1. 使用流(Stream)
```java
List<Long> idList = ...; // 假设这是已有的Long列表
List<String> stringList = idList.stream()
.map(Long::toString) // 将每个Long转为String
.collect(Collectors.toList()); // 收集到新的List<String>
```
2. 使用Lambda表达式
```java
List<Long> idList = ...;
List<String> stringList = idList.stream()
.map(id -> String.valueOf(id)) // 直接将Long转换为String
.collect(Collectors.toList());
```
这里的关键点在于`map()`函数,它接受一个函数作为参数,对列表中的每个元素应用这个函数,这里是将每个`Long`值转换为`String`。
用 stream list 转 map
使用stream可以很方便地将List转换为Map。在JDK8以后,我们可以使用lambda表达式和Stream的collect方法来实现这个功能。具体的做法是使用Collectors.toMap方法,该方法接受两个参数,第一个参数是key的生成函数,第二个参数是value的生成函数。例如,可以使用以下代码将List<User>转换为Map<Integer, String>:
```
Map<Integer, String> userMap = userList.stream()
.collect(Collectors.toMap(User::getId, User::getName));
```
这里的User是一个自定义的类,getId和getName是User类的两个方法,分别用于生成Map中的key和value。上述代码将根据User对象的id作为key,name作为value,将List<User>转换为Map<Integer, String>。
如果你希望将List<User>直接转换为Map<Integer, User>,可以使用以下代码:
```
Map<Integer, User> userMap = userList.stream()
.collect(Collectors.toMap(User::getId, user -> user));
```
这里的User是一个自定义的类,getId是User类的一个方法,用于生成Map中的key,user -> user表示将User对象本身作为value。上述代码将根据User对象的id作为key,将User对象本身作为value,将List<User>转换为Map<Integer, User>。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
阅读全文