Java Lambda 表达式在开发中数据结构的转换
1. 提取User类型的List对象userList中的Id属性作为新的List
代码如下(示例):
// distinct()对Id进行去重
List<Integer> ids = userList.stream().map(User::getId).distinct().collect(Collectors.toList());
其实现类似于:
List<Integer> ids = new ArrayList<>();
for (User user : userList) {
ids.add(user.getId())
// 省略去重操作
}
2.将User类型的List对象转为属性Id为Key,User对象为Value的Map集合
代码如下(示例):
Map<Integer, User> userMap = userList.stream().collect(Collectors.toMap(User::getId,user->user,(k1,k2)->k1));
// 其实现原理也是类似于for循环中往map 添加值,(k1,k2)->k1表示出现重复键,则保留k1和k2中的k1
3.将User类型的List对象转为属性Id和userId的组合为Key,User对象为Value的Map集合
代码如下(示例):
Map<String,User> userMap = userList.stream().collect(Collectors.toMap(user-> user.getId() + "_" + user.getUserId(), user-> user,(k1, k2)->k1));