列表中每个项目的 Kotlin 基本数学

问题描述 投票:0回答:2

我不太了解如何在 Kotlin 中正确使用列表,即使是简单的事情。

假设我有一个双打列表,并且我想要一个两倍大的列表。所以对于 [1.0, 2.0, 3.0] 我想要 [2.0, 4.0, 6.0] 作为输出。

“正确”的方法是什么?

我可以找到一种方法来逐步浏览列表并将每个部分添加到新的可变列表中,如下所示:

fun main() {
    val list1 = listOf<Double>(1.0,2.0,3.0,4.0)
    val list2 = mutableListOf<Double>()
    list1.forEach{
        list2.add(it*2.0)
    }
    print(list1)
    print(list2)
}

https://pl.kotl.in/WORk6Wdqu 对于操场上的代码。

但这似乎“不是正确的方法”,因为在大列表上它会非常慢,或者与正确的方法相比只需要很多行,或者我们现在有两个列表(在最后,我会将这些值推回到我的“list1”中)

list kotlin
2个回答
4
投票

map
将表达式应用于每个项目,并根据结果创建一个新列表。

val list1 = listOf<Double>(1.0,2.0,3.0,4.0)
val list2 = list1.map { it * 2 }

或者我们现在有两个列表(最后,我将把这些值推回到我的“list1”中)

如果您确实有非常大的列表,您甚至不想要其中一个,并且可能想看看

sequences
。但我认为你操之过急并且担心太多了。

尽可能将事物保留在不可变对象中是很好的做法,但这意味着有时会创建新列表。


0
投票

实现此任务的一个简洁方法是使用映射函数,它允许您按照给定的标准转换列表的值。

示例:

fun main() {
    val myList1 = listOf(1.0,2.0,3.0,4.0)
    val myList2 = myList1.map { it * 2 }

    println(myList2)
}
© www.soinside.com 2019 - 2024. All rights reserved.