在列表中的Java 8嵌套空检查的字符串的地图

adbdkb:

我需要做一系列的null检查(嵌套空检查),以获得字符串像下面的数组

String[] test;
if(CollectionUtils.isNotEmpty(checkList)){
    if(MapUtils.isNotEmpty(checkList.get(0))){
        if(StringUtils.isNotBlank(checkList.get(0).get("filename"))){
            test = checkList.get(0).get("filename").split("_");
        }
    }
}

有没有更好的办法,也许使用Java8可选,执行这些类型的嵌套检查?我不成功尝试使用可选带flatmap /图。

约翰Kugelman:

你可以使用的长链OptionalStream运营逐步改造输入步骤到输出。事情是这样的(未经测试):

String[] test = Optional.ofNullable(checkList)
    .map(Collection::stream)
    .orElseGet(Stream::empty)
    .findFirst()
    .map(m -> m.get("filename"))
    .filter(f -> !f.trim().isEmpty())
    .map(f -> f.split("_"))
    .orElse(null);

我强烈建议您停止使用null列表和地图。这是一个很大更好地使用的集合,而不是的集合,这样你就不必有null检查所有的地方。此外,不允许为空或空字符串到您的收藏; 筛选出来或取代他们null尽快早,因为你将用户输入到内存中的对象。你不希望有接入到呼叫trim()isBlank()等所有的地方。

如果你这样做,你可以简化为:

String[] test = checkList.stream()
    .findFirst()
    .map(m -> m.get("filename"))
    .map(f -> f.split("_"))
    .orElse(null);

更漂亮,不是吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查嵌套列表中的字符串

收集列表<对象>地图<字符串,列表<对象>>中的Java 8中使用流

空检查Java中的字符串

以列表添加值内地图<字符串,列表> Java中8

地图<字符串,地图<字符串,租车>>到列表<汽车>使用Java 8

Java的8炼油LAMBDA地图<字符串,列表<字符串>>将字符串地图关键要求

创建地图字符串和对象在Java中的列表8

创建使用Java 8流API字符串和排序列表中的地图

从Java 8的地图列表中获取字符串

字符串空白(空或空)检查:结构是否与Java 8可选/过滤器匹配

Java的8流,对象的转换列表地图<字符串,将<字符串>>

Java的8 STREM过滤图在地图 - 地图<字符串,地图<字符串,员工>>

如何在Java中检查不为空的字符串?

计算嵌套列表中的字符串

在嵌套列表中拆分字符串

检查列表字符串为null或为空

Java的8个流地图<字符串,列表<字符串值>>为每个关键总和

如何在嵌套字典中检查相同的字符串

Java的8个流 - 查找最大计数值地图<字符串,列表<对象>>

Java8流列表<地图<字符串,对象>> groupingBy和计数值

在scala中检查选项字符串是否为空

JavaScript函数中的字符串或空值检查

检查Kotlin中的字符串是否为空

卡在空指针和空字符串检查中

转换字符串地图<整数,字符串>在Java 8

Java的8:如何字符串转换为地图<String,字符串>?

Java中的列表与地图

Java的8流列表<美孚>地图<日期,地图<字符串,龙>>有条件groupingBy

整数排序基于字符串的Java中的列表的列表