在Kotlin代码中,我有一个对象列表,当通过filtermap处理它时,我想收集特别感兴趣的项目.抛弃其他人.

例如,我使用foreach循环,如下所示.用map而不是foreach能让它变得更好吗?

fun main() {

    val exceptionRequests = mutableListOf<String>()

    listOf<String>("Name1", "Name2", "Name3")
        .filter {
            it.length > 2
        }
        .forEach {
            try {
                if (it == "Name2") {
                    throw Exception(it)
                } // Throwing exception here like this for simplicity. In real case, business logic throws exception.
            } catch (exception: Exception) {
                exceptionRequests.add(it)
            }
        }

    println(exceptionRequests) // This prints `Name2`.
}

推荐答案

你可以用.mapNotNull

val exceptionResults = listOf<String>("Name1", "Name2", "Name3")
.filter {
    it.length > 2
}
.mapNotNull { name ->
    try {
        if (name == "Name2") {
            throw Exception(name)
        } 
        null
    } catch (exception: Exception) {
        name
    }
}
println(exceptionRequests) // This prints `Name2`.

若并没有引发异常,try-catch表达式将导致null.

Java相关问答推荐

我可以在regex中的字符类中放置断言吗?

我应该避免在Android中创建类并在运行时编译它们吗?

具有默认分支的JUnit代码覆盖率切换声明

Java 22模式匹配不适用于记录模式匹配.给出汇编问题

无法找到符号错误—Java—封装

使用Java Streams API比较两个不同的Java集合对象和一个公共属性

在现代操作系统/硬件上按块访问数据值得吗?

尽管类型擦除,instanceof与泛型在Java中如何工作?

无法传递消费者<;>;实例

使用传递的参数构造异常的Mockito-doThrow(或thenThrow)

由于在生成器模式中使用泛型,lambda表达式中的返回类型错误

Java堆中的许多java.time.ZoneRegion实例.ZoneId实例不应该被缓存吗?

Domino中不同的java.Protocol.handler.pkgs设置在XPages Java中导致错误

Java中HashSet的搜索时间与TreeSet的搜索时间

何时调用密封层次 struct 的switch 中的默认情况

具有最大共同前景像素的图像平移优化算法

在整数列表中查找和可被第三个整数整除的对时出现无法解释的RunTimeError

持续时间--为什么在秒为负数的情况下还要做额外的工作?

Java 21内置http客户端固定运营商线程

如何使用 JDBC 更改 Postgres Enum 类型