📜  在 Kotlin 中合并两个集合

📅  最后修改于: 2022-05-13 01:54:36.361000             🧑  作者: Mango

在 Kotlin 中合并两个集合

Kotlin 是 JetBrains 开发的一种静态类型的通用编程语言,构建了 IntelliJ IDEA、PhpStorm、Appcode 等世界一流的 IDE。它由 JetBrains 于 2011 年首次推出,是一种新的 JVM 语言。 Kotlin 是一种面向对象的语言,是一种比Java“更好的语言”,但仍可与Java代码完全互操作。在本文中,我们将了解如何将两个或多个集合合并为一个。但是,在我们继续之前,我们需要了解可变类型和不可变类型之间的区别。不可变类型的对象是不能更改的对象。例如,如果我们定义一个不可变列表,我们将无法向其中添加其他对象。

例子

您可以使用 listof 方法在 Kotlin 中创建一个列表。但是,这个方法返回的列表是一个不可变列表,所以我们需要创建一个可变列表来添加对象。让我们看看上面提到的步骤:

Step 1.让我们创建两个列表,listA 和 listB,如下

var listA= mutableListof ("a","a","b")
var listB= mutableListOf ("a", "c")

如果类型声明是从 listOf/mutableListof 方法中的对象推断出来的,我们就不需要显式声明类型声明。因此,前面的代码将被重写为 mutableListOf (“a”, “a”, “b”)。

步骤 2.现在,我们将尝试将 listA 的内容添加到 listB 中。为此,我们需要 addAll() 方法:

Kotlin
fun main (args: Array ) {
  val listA= mutableListof ("a", "a", "b")
  val lists- mutableListof ("a", "c")
  listB.addAll(listA)
  println(listB)
}


Kotlin
fun main (args: Array) {
  val listA = mutableListof("a","a","b")
  val listB = mutableListOf("a","c")
  val listC = listB.union(listA)
  println(listC)
}


Kotlin
val setA= mutableSetOf ("a", "b","c")
val setB= mutableSetOf("a", "b","c","d")
setB.addAll(setA)
println(setB)
println (sets.union(setA))


Kotlin
val mapA= mutableMapof  ("a" to 1, "b" to 2)
val mapB= mutableMapOf ("a" to 2, "d" to 4)
mapA.putAll(mapB)
println(mapA)


输出:

[a, c, a, a, b]

第 3 步。合并两个列表的另一种方法是使用联合。这将返回组合集合的唯一元素

科特林

fun main (args: Array) {
  val listA = mutableListof("a","a","b")
  val listB = mutableListOf("a","c")
  val listC = listB.union(listA)
  println(listC)
}

输出:

[a, c, b]

步骤 4.同样,可变集合也可以合并,唯一的区别是集合中的 addAll 将类似于我们将使用 union 方法收到的内容;因为它是一个集合,所以只允许一个唯一的值:

科特林

val setA= mutableSetOf ("a", "b","c")
val setB= mutableSetOf("a", "b","c","d")
setB.addAll(setA)
println(setB)
println (sets.union(setA))

输出:

[a, b, c, d]
[a, b, c, d]

如果要合并两个映射,则需要 putAll ( ) 方法,因为映射不存在 addAll 和 union:

科特林

val mapA= mutableMapof  ("a" to 1, "b" to 2)
val mapB= mutableMapOf ("a" to 2, "d" to 4)
mapA.putAll(mapB)
println(mapA)

输出:

(a=2, b=2, d=4}

请注意,在两个映射中都定义了键 a,但后来出现的键(在本例中为 mapB)获胜。