首页 > 其他分享 >Kotlin 集合 - 创建列表、集合和映射

Kotlin 集合 - 创建列表、集合和映射

时间:2023-06-30 22:03:57浏览次数:34  
标签:元素 映射 Kotlin 可变 列表 创建 集合

Kotlin 集合 - 创建列表、集合和映射_字符串

集合是保存多个相同或不同类型元素的容器。它们提供了各种方法和操作来有效地操纵和访问存储的数据。了解如何创建和使用集合对于任何 Kotlin 开发人员都至关重要,因为这使他们能够有效地组织和管理数据。

列表

列表是 Kotlin 中允许重复元素的有序集合。它们提供了根据元素在列表中的索引添加、删除和访问元素的方法。在本节中,我们将探讨创建列表的不同方法,包括空列表、包含元素的列表以及不可变列表和可变列表之间的区别。

创建一个空列表:

要在 Kotlin 中创建空列表,您可以使用该listOf()函数而不传递任何元素。这是一个例子:

val emptyList = listOf<String>()

在上面的代码中,我们创建了一个类型为 的空列表String。该列表最初不包含任何元素。

创建包含元素的列表:

要创建包含初始元素的列表,您可以使用该listOf()函数并将元素作为参数传递。这是一个例子:

val numbers = listOf(1, 2, 3, 4, 5)

在上面的代码片段中,我们创建一个名为 的列表numbers,其中包含整数 1、2、3、4 和 5。列表中元素的顺序被保留。

不可变列表与可变列表:

Kotlin 提供了不可变和可变版本的列表。使用该listOf()函数创建的不可变列表是只读的,这意味着它们的内容在创建后无法修改。任何在不可变列表中添加、删除或修改元素的尝试都将导致编译错误。

另一方面,如果您需要一个可以动态修改的列表,则可以使用该mutableListOf()函数创建可变列表。这是一个例子:

val mutableList = mutableListOf("apple", "banana", "orange")

在上面的代码中,我们创建了一个名为的可变列表mutableList,它最初包含字符串“apple”、“banana”和“orange”。可变列表允许根据需要添加、删除和修改元素。

根据应用程序的要求在不可变列表和可变列表之间进行选择非常重要。如果您的集合在创建后不需要修改,则使用不可变列表可以确保数据完整性并避免意外更改。另一方面,如果您需要动态修改列表,可变列表提供了必要的灵活性。


集合是 Kotlin 中的无序集合,不允许重复元素。它们提供了添加、删除和检查元素是否存在的有效方法。在本节中,我们将探讨如何创建集合,包括空集合、带元素的集合,以及不可变集合和可变集合的区别。

创建一个空集:

要在 Kotlin 中创建空集,您可以使用该setOf()函数而不传递任何元素。这是一个例子:

val emptySet = setOf<String>()

在上面的代码中,我们创建了一个空的 type 集String。该集合最初不包含任何元素。

创建包含元素的集合:

要创建包含初始元素的集合,您可以使用该setOf()函数并将元素作为参数传递。这是一个例子:

val fruits = setOf("apple", "banana", "orange")

在上面的代码片段中,我们创建了一个名为的集合fruits,其中包含字符串“apple”、“banana”和“orange”。请注意,集合中元素的顺序无法保证,因为集合是无序集合。

不可变集与可变集:

Kotlin 提供了不可变集和可变集。使用该函数创建的不可变集setOf()是只读的。一旦创建了不可变集,其内容就无法修改。任何在不可变集中添加或删除元素的尝试都将导致编译错误。

如果需要一个可以动态修改的集合,可以使用该mutableSetOf()函数创建可变集合。这是一个例子:

val mutableSet = mutableSetOf("apple", "banana", "orange")

在上面的代码中,我们创建了一个名为的可变集mutableSet,它最初包含字符串“apple”、“banana”和“orange”。可变集允许根据需要添加、删除和修改元素。

在不可变集和可变集之间进行选择时,请考虑应用程序的要求。如果您有不会更改的固定元素集合,则使用不可变集可确保数据完整性并防止意外修改。另一方面,如果您需要动态修改集合,可变集合提供了必要的灵活性。


地图

映射是 Kotlin 中的键值对,允许根据键高效查找和检索值。映射不允许有重复的键,但它们可以有重复的值。在本节中,我们将探讨如何创建映射,包括空映射、带有键值对的映射,以及不可变映射和可变映射之间的区别。

创建空地图:

要在 Kotlin 中创建空映射,您可以使用该mapOf()函数而不传递任何键值对。这是一个例子:

val emptyMap = mapOf<String, Int>()

在上面的代码中,我们创建一个空映射,其中键的类型为String,值的类型为Int。该映射最初不包含任何键值对。

使用键值对创建映射:

要创建具有初始键值对的映射,您可以使用该mapOf()函数并将这些对作为参数提供。这是一个例子:

val userAges = mapOf("John" to 30, "Alice" to 25, "Bob" to 35)"John" to 30, "Alice" to 25, "Bob" to 35)

在上面的代码片段中,我们创建了一个名为的映射userAges,其中包含键值对“John”到 30、“Alice”到 25 以及“Bob”到 35。键是表示用户名的字符串,值是整数代表着各自的年龄。

不可变映射与可变映射:

Kotlin 提供了不可变和可变版本的映射。使用该mapOf()函数创建的不可变映射是只读的。不可变映射一旦创建,其键值对就无法修改。任何在不可变映射中添加、删除或更新条目的尝试都将导致编译错误。

如果需要可以动态修改的映射,可以使用该mutableMapOf()函数创建可变映射。这是一个例子:

val mutableMap = mutableMapOf("apple" to 5, "banana" to 3, "orange" to 7)"apple" to 5, "banana" to 3, "orange" to 7)

在上面的代码中,我们创建了一个名为的可变映射mutableMap,它最初包含键值对“apple”到 5、“banana”到 3、“orange”到 7。可变映射允许添加、删除和更新键值对。根据需要的值对。

在不可变映射和可变映射之间进行选择时,请考虑应用程序的要求。如果您有一组不会更改的固定键值对,则使用不可变映射可确保数据完整性并防止意外修改。另一方面,如果您需要动态修改映射,则可变映射提供了必要的灵活性。

标签:元素,映射,Kotlin,可变,列表,创建,集合
From: https://blog.51cto.com/u_16175634/6594278

相关文章

  • 光脚丫学LINQ(041):使用对象关系设计器修改映射关系
    演示视频:http://u.115.com/file/f2b86d8eab演示重点此演示视频主要介绍了如何使用VS提供的【对象关系设计器】这个工具来建立实体类之间的关系。虽然此工具可以自动根据数据表之间的关系来建立起对象模型中实体类与实体类之间的关系。然而,默认情况下,它所建立的关系貌似都是清一色的......
  • C# 集合类 入门
    什么是集合类?集合类的位置在System.Collections.Generic命名空间中。在我看来,集合类和大学里《数据结构》中所学的各种结构很像。集合类中包含Queue<T>类、Stack<T>类,LinkedList<T>类,而《数据结构》中有队列、栈、双向链表。这些概念性的东西是想通的。C#中的集合类更像是一个......
  • 集合流的使用之“根据对象字段进行排序”
    一、根据对象字段进行排序【代码】@TestpublicvoidwzwStream(){List<User>list=newArrayList<>();for(inti=1;i<=3;i++){Useruser=newUser();user.setUserId(i);user.se......
  • Android 构建脚本从Groovy迁移到Kotlin DSL
    原文:https://edenxio.github.io/2019/02/01/Android%20%E6%9E%84%E5%BB%BA%E8%84%9A%E6%9C%AC%E4%BB%8EGroovy%E8%BF%81%E7%A7%BB%E5%88%B0Kotlin%20DSL/ 为什么要迁移?因为Groovy是动态语言,在用作Android构建脚本的时候,经常有些问题:很差的IDE支持(自动提示等)性能问题......
  • Kotlin + buildSrc:更好的管理Gadle依赖
    为了充分利用AndroidPluginforGradle3.0+的优点,将Android项目拆分成多个module的做法越来越常见。然而,随着module数量的增多,我们很快就会遇到依赖管理的混乱问题。管理Gradle依赖的三种不同方法:手动管理使用Google推荐的“ext”Kotlin+buildSrc1、手动管理这是一种大多数人在......
  • Kubernetes编程——client-go基础—— 深入 API Machinery —— REST 映射
    深入APIMachinery——REST映射 GVK与GVR之间的映射关系被称为REST映射。我理解意思是说:在Kubernetes中,RESTMapping(REST映射)用于将GroupVersionKind(GVK)与GroupVersionResource(GVR)之间建立映射关系。......
  • 【Android Kotlin】全网最全的Android Kotlin入门教程指南,入股不亏
    前言2017年的谷歌大会上,Kotlin被指定为官方的Android开发语言,从长远的角度来看,Kotlin语言是作为Android开发者必须要掌握的一门编程语言。Kotlin编程语言极易上手,而且它不像Java那样代码繁琐,Kotlin代码更简洁,可读性也更强,可以花更少的时间来编写和理解代码,极大地提高了工作效率,不仅......
  • 【C#/.NET】使用Automapper映射record类型
    ​        当使用Automapper进行对象映射时,通常我们会使用POCO(PlainOldCLRObject)类作为源对象和目标对象。然而,自从C#9引入了record类型,它们提供了更简洁、不可变的对象模型。我已经将项目的所有Dto都是用record类型,但是record类型还是有些需要注意的点,本文将介绍如......
  • EPSON机械手跟相机搭配走tcp ip协议,及跟plc通讯将手动操作部分映射到触摸屏
    EPSON机械手跟相机搭配走tcpip协议,及跟plc通讯将手动操作部分映射到触摸屏EPSON机械手与相机通过TCP/IP协议进行配对,并与PLC进行通信,以将手动操作部分映射到触摸屏。这样做的好处是可以实现更高效的自动化操作和监控。在这段话中涉及到的知识点和领域范围包括:EPSON机械手:机械手是......
  • 怎么把具有树形父子结构的对象集合存到对应的树形父子结构表里呢
     可以采用如下步骤:创建一个Map,key是对象的id,value是对象本身。遍历对象集合,将对象及其所有子对象都添加到Map中。迭代Map中的对象,检测其父节点是否存在,存在则设置其父id。最后遍历Map中的所有对象,按照父id顺序插入数据库表中。具体......