# Java 8 引入的 Stream
别用 toMap() 的原因
public class User {
private int id;
private String name;
}
public class UserTest {
@Test
public void demo() {
List<User> userList = new ArrayList<>();
// 模拟数据
userList.add(new User(1, "Alex"));
userList.add(new User(1, "Beth"));
Map<Integer, String> map = userList.stream()
.collect(Collectors.toMap(User::getId, User::getName));
System.out.println(map);
}
}
Key 重复的处理
public class UserTest {
@Test
public void demo() {
List<User> userList = new ArrayList<>();
// 模拟数据
userList.add(new User(1, "Alex"));
userList.add(new User(1, "Beth"));
Map<Integer, String> map = userList.stream()
.collect(Collectors.toMap(User::getId, User::getName, (oldData, newData) -> newData));
System.out.println(map);
}
}
使用 Optional 避免 NPE
public class UserTest {
@Test
public void demo() {
List<User> userList = new ArrayList<>();
// 模拟数据
userList.add(new User(1, "Alex"));
userList.add(new User(1, "Beth"));
userList.add(new User(2, null));
Map<Integer, String> map = userList.stream()
.collect(Collectors.toMap(
User::getId,
user -> Optional.ofNullable(user.getName()).orElse(""),
(oldData, newData) -> newData)
);
System.out.println(map);
}
}
回归传统 for 循环
public class UserTest {
@Test
public void demo() {
List<User> userList = new ArrayList<>();
// 模拟数据
userList.add(new User(1, "Alex"));
userList.add(new User(1, "Beth"));
userList.add(new User(2, null));
Map<Integer, String> map = new HashMap<>();
userList.forEach(user -> {
map.put(user.getId(), user.getName() != null ? user.getName() : "");
});
System.out.println(map);
}
}
# 结论
对编程、职场感兴趣的同学,可以链接我,微信:coder301 拉你进入“程序员交流群”。
东哥作为一名超级老码农,整理了全网最全《Java高级架构师资料合集》。
资料包含了《IDEA视频教程》、《最全Java面试题库》、《最全项目实战源码及视频》及《毕业设计系统源码》,总量高达 650GB 。全部免费领取!全面满足各个阶段程序员的学习需求。