kotlin--3.集合操作

news/2025/3/19 11:26:34/

目录

一.list集合

二.Set集合

 三.Map集合

迭代遍历Map集合:

  8.hashMap

四.Stream流

1.map

2.filter 

3.reduce 

4.forEach 

5.sorted 

6.distinct 

 7.综合案例


一.list集合

在Kotlin中,常见的List集合类型有以下几种:

  1. listOf:不可变的只读List,其元素不可更改。
  2. mutableListOf:可变的List,允许添加、删除和修改元素。
  3. arrayListOf:可变的List,底层实现使用数组,性能较好。

以下是创建List集合以及常见操作的示例:

  1. 创建List集合:
// 创建一个不可变的只读List
val list1 = listOf(1, 2, 3)
println(list1)  // 输出:[1, 2, 3]// 创建一个可变的List
val list2 = mutableListOf("apple", "banana", "orange")
println(list2)  // 输出:[apple, banana, orange]// 创建一个可变的ArrayList
val list3 = arrayListOf(1.2, 3.4, 5.6)
println(list3)  // 输出:[1.2, 3.4, 5.6]

   2.常见操作:

val numbers = listOf(1, 2, 3, 4, 5)// 访问元素
val firstNumber = numbers[0]
println(firstNumber)  // 输出:1// 添加元素
val newList = numbers.toMutableList()
newList.add(6)
println(newList)  // 输出:[1, 2, 3, 4, 5, 6]// 删除元素
newList.removeAt(2)
println(newList)  // 输出:[1, 2, 4, 5, 6]// 修改元素
newList[1] = 10
println(newList)  // 输出:[1, 10, 4, 5, 6]// 迭代元素
for (number in numbers) {println(number)
}// 过滤元素
val evenNumbers = numbers.filter { it % 2 == 0 }
println(evenNumbers)  // 输出:[2, 4]

3.泛型约束

例如,在创建一个只包含整数的List时,可以指定List的泛型类型为Int:

val numbers: List<Int> = listOf(1, 2, 3)val mutableNumbers: MutableList<Int> = mutableListOf(1, 2, 3)

二.Set集合

Kotlin中的Set集合是一种不允许重复元素的集合。由于Set集合中的元素是无序的,因此不能通过索引获取元素。

1.创建Set集合:

val set: Set<Int> = setOf(1, 2, 3)val mutableSet: MutableSet<Int> = mutableSetOf(1, 2, 3)

2.Set集合的常见操作:

  • 添加元素:使用add方法添加元素到Set集合中。
    mutableSet.add(4)
  • 删除元素:使用remove方法从Set集合中删除指定元素。
    mutableSet.remove(3)
  • 判断元素是否存在:使用contains方法判断Set集合中是否包含指定元素。
    val containsElement = mutableSet.contains(2)
  • 获取Set集合的大小:使用size属性获取Set集合的大小。
    val size = mutableSet.size
  • 迭代遍历Set集合:
    for (element in mutableSet) {println(element)
    }
    ---------------------
    mutableSet.forEach { element ->println(element)
    }

 三.Map集合

在Kotlin中,Map集合用于存储键值对,其中键和值可以是任意类型。以下是创建Map集合和进行常见操作的示例:

  1. 创建Map集合:

    • 使用mapOf函数创建不可变的Map集合:
      val map: Map<String, Int> = mapOf("A" to 1, "B" to 2, "C" to 3)
    • 使用mutableMapOf函数创建可变的Map集合:
      val mutableMap: MutableMap<String, Int> = mutableMapOf("A" to 1, "B" to 2, "C" to 3)
  2. Map集合的常见操作:

    • 添加或更新元素:使用put方法添加或更新键值对。
      mutableMap.put("D", 4)
      mutableMap["E"] = 5
    • 删除元素:使用remove方法从Map集合中删除指定键值对。
      mutableMap.remove("C")
    • 判断键是否存在:使用containsKey方法判断Map集合中是否包含指定键。
      val containsKey = mutableMap.containsKey("A")
    • 判断值是否存在:使用containsValue方法判断Map集合中是否包含指定值。
      val containsValue = mutableMap.containsValue(2)
    • 获取Map集合的大小:使用size属性获取Map集合的大小。
      val size = mutableMap.size
    • 获取键或值的集合:使用keys和values属性分别获取Map集合中的键和值的集合。
      val keys = mutableMap.keys
      val values = mutableMap.values
    • 迭代遍历Map集合:

      for ((key, value) in mutableMap) {println("Key: $key, Value: $value")
      }
      ---------------------
      mutableMap.forEach { (key, value) ->println("Key: $key, Value: $value")
      }

  8.hashMap

fun main() {val hashMap = HashMap<String, Int>()// 添加键值对hashMap["Alice"] = 25hashMap["Bob"] = 30hashMap["Charlie"] = 35// 获取键对应的值val age = hashMap["Alice"]println(age) // 输出: 25// 遍历键值对for ((name, age) in hashMap) {println("$name: $age")}// 输出:// Alice: 25// Bob: 30// Charlie: 35// 检查键是否存在val containsKey = hashMap.containsKey("Alice")println(containsKey) // 输出: true// 删除指定键值对hashMap.remove("Bob")println(hashMap) // 输出: {Alice=25, Charlie=35}// 清空哈希表hashMap.clear()println(hashMap.isEmpty()) // 输出: true
}

四.Stream流

在Kotlin中,Stream流操作提供了一种功能强大的方式来处理集合数据。可以使用扩展函数和lambda表达式来对集合进行处理。以下是一些常见的Stream流操作方法及其示例:

1.map

  1. map对集合中的每个元素应用函数,并将结果收集到一个新的集合中。
val numbers = listOf(1, 2, 3, 4, 5)
val squaredNumbers = numbers.map { it * it }
println(squaredNumbers)   // 输出:[1, 4, 9, 16, 25]

2.filter 

  1. filter:根据指定的条件筛选集合中的元素。
val numbers = listOf(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter { it % 2 == 0 }
println(evenNumbers)   // 输出:[2, 4]

3.reduce 

  1. reduce:将集合中的元素进行累积操作,返回一个结果。
val numbers = listOf(1, 2, 3, 4, 5)
val sum = numbers.reduce { acc, num -> acc + num }
println(sum)   // 输出:15

4.forEach 

  1. forEach:对集合中的每个元素应用指定的操作。
val numbers = listOf(1, 2, 3, 4, 5)
numbers.forEach { println(it) }

5.sorted 

  1. sorted:对集合中的元素进行排序。
val numbers = listOf(4, 2, 5, 1, 3)
val sortedNumbers = numbers.sorted()
println(sortedNumbers)   // 输出:[1, 2, 3, 4, 5]

6.distinct 

  1. distinct去除集合中的重复元素。
val numbers = listOf(1, 2, 2, 3, 3, 3, 4, 4, 5)
val distinctNumbers = numbers.distinct()
println(distinctNumbers)   // 输出:[1, 2, 3, 4, 5]

 7.综合案例

data class Person(val name: String, val age: Int)fun main() {val people = listOf(Person("Alice", 25),Person("Bob", 30),Person("Charlie", 35),Person("David", 40),Person("Emma", 45))val filteredPeople = people.filter { it.age > 30 }.sortedByDescending { it.age }.map { "${it.name} (${it.age})" }println(filteredPeople)
}

在上述案例中,我们有一个包含Person对象的人员列表。我们首先使用filter函数筛选出年龄大于30岁的人员,然后使用sortedByDescending函数按年龄降序排序,最后使用map函数将Person对象转换为格式化的字符串。最终,我们将过滤和格式化后的结果打印出来。

输出结果将是:

[Emma (45), David (40), Charlie (35)]

http://www.ppmy.cn/news/1223611.html

相关文章

总结 CNN 模型:将焦点转移到基于注意力的架构

一、说明 在计算机视觉时代&#xff0c;卷积神经网络&#xff08;CNN&#xff09;几十年来一直是主导范式。直到 2021 年 Vision Transformers (ViTs) 出现&#xff0c;这个领域才开始发生变化。现在&#xff0c;是时候采用受 Transformer 架构启发的基于注意力的模型了&#x…

torch - 张量Tensor常见的形式

1.Scalar 通常就是一个数值 x tensor(42.) 输出x&#xff1a; 2.Vector 特征向量 例如&#xff1a;[-5., 2., 0.]在深度学习中通常表示特征&#xff0c;如词向量特征&#xff0c;某一维度特征等 3.Matrix 一般计算的都是矩阵&#xff0c;通常都是多维的。 可以做矩阵的…

【Redis】springboot整合redis(模拟短信注册)

要保证redis的服务器处于打开状态 上一篇&#xff1a; 基于session的模拟短信注册 https://blog.csdn.net/m0_67930426/article/details/134420531 整个流程是&#xff0c;前端点击获取验证码这个按钮&#xff0c;后端拿到这个请求&#xff0c;通过RandomUtil 工具类的方法生…

【Python 千题 —— 基础篇】输出列表平均值

题目描述 题目描述 输出列表的平均值。题中有一个包含数字的列表 [19, 39, 130, 48, 392, 101, 92]&#xff0c;使用 for 循环输出这个列表中所有项的平均值。 输入描述 无输入。 输出描述 输出列表的平均值。 示例 示例 ① 输出&#xff1a; 列表的平均值是&#xf…

操作系统:输入输出管理(二)磁盘调度算法

一战成硕 5.3 磁盘固态硬盘5.3.1 磁盘5.3.2 磁盘的管理5.3.3 磁盘调度算法 5.3 磁盘固态硬盘 5.3.1 磁盘 磁盘是表面涂有磁性物质的物理盘片&#xff0c;通过一个称为磁头的导体线圈从磁盘存取数据。在读写操作中&#xff0c;磁头固定&#xff0c;磁盘在下面高速旋转。磁盘盘…

互联网上门预约洗衣洗鞋店小程序;

拽牛科技干洗店洗鞋店软件&#xff0c;方便快捷&#xff0c;让你轻松洗衣。只需在线预约洗衣洗鞋服务&#xff0c;附近的门店立即上门取送&#xff0c;省心省力。轻松了解品牌线下门店&#xff0c;通过列表形式展示周围门店信息&#xff0c;自动选择最近门店为你服务。简单填写…

【Ubuntu】Ubuntu20.04下安装视频播放器vlc和录屏软件ssr

【Ubuntu】Ubuntu20.04下安装视频播放器vlc和录屏软件ssr 文章目录 【Ubuntu】Ubuntu20.04下安装视频播放器vlc和录屏软件ssr1. 安装视频播放器vlc2. 安装录屏软件ssr 1. 安装视频播放器vlc sudo apt-get install vlcvlc是一款比较简洁的视频播放器&#xff0c;如下所示 2. 安…

创邻科技亮相ISWC 2023,国际舞台见证知识图谱领域研究突破

近日&#xff0c;第22届国际语义网大会 ISWC 2023 在雅典希腊召开&#xff0c;通过线上线下的形式&#xff0c;聚集了全球的顶级研究人员、从业人员和行业专家&#xff0c;讨论、发展和塑造语义网和知识图谱技术的未来。创邻科技CEO张晨博士作为知识图谱行业专家受邀参会&#…