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}";
posted @ 2025-05-12 23:31  一只盐桔鸡  阅读(12)  评论(0)    收藏  举报