JavaSE爬坑
JavaSE爬坑
Stream流相关
Collectors.toMap要注意空值问题,value为空的时候是会报NPE的
public void toMapNPE() {
UserPO userPO1 = UserPO.builder().age(1).name("A").build();
UserPO userPO2 = UserPO.builder().age(2).build();
UserPO userPO3 = UserPO.builder().age(2).name("C").build();
ArrayList<UserPO> userPOList = Lists.newArrayList(userPO1, userPO2, userPO3);
Map<Integer, String> collect =
userPOList.stream().collect(Collectors.toMap(UserPO::getAge, UserPO::getName, (o1, o2) -> o1));
}
filter后findAny要注意空值问题,正确方式应该先findAny,再map,因为filter出来后可能有数据,但是map后可能是null
@Test
public void filterAnyNPE() {
TxUserPO userPO1 = TxUserPO.builder().age(1).qqInfo(new QQInfo(){{setQq("123");}}).build();
TxUserPO userPO2 = TxUserPO.builder().age(2).build();
TxUserPO userPO3 = TxUserPO.builder().age(2).build();
ArrayList<TxUserPO> userPOList = Lists.newArrayList(userPO1, userPO2, userPO3);
QQInfo qqInfo = userPOList.stream()
.filter(vo -> vo.getAge() > 1)
.map(TxUserPO::getQqInfo)
.findAny()
.orElse(new QQInfo());
System.out.println(qqInfo);
}
字符串相关
MessageFormat的formate方法,如果传入的字符串中包含单引号,会导致占位符替换出问题,
msg = "i'm {0}";

浙公网安备 33010602011771号