| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Kotlin学习——集合(一) -> 正文阅读 |
|
[移动开发]Kotlin学习——集合(一) |
集合概述集合通常包含相同类型的一些(数目也可以为零)对象。集合中的对象称为元素或者条目。下面是 Kotlin 相关的集合类型:
集合类型Kotlin 标准库提供了基本集合类型的实现:set、list以及map。一对接口代表每种集合类型:
更改可变集合不需要它是以 var 定义的变量:写操作修改同一个可变集合对象,因此引用不会改变。也就是说虽然定义的是val类型的不可变的集合,我们可以改变集合里面的数据,但是我们的集合对象是没有改变的,所以对于val类型的集合也是可以改变其集合内部值的。但是,如果尝试对 val 集合重新赋值,那么将会收到编译错误。 只读集合类型是型变的。集合类型与元素类型具有相同的子类型关系(也就是说可以用子类去替换父类)。map在值(value)类型上是型变的,但是键(key)类型上不是 反之,可变集合不是型变的;否则将导致运行时故障。 Collectioncollection 是 set 和 list 的父类。Collection<T> 是集合层次结构的根。此接口表示一个只读集合的共同行为:检索大小、检测是有为成员等等。Collection 继承自 Iterable<T> 接口,它定义了迭代元素的操作。 MutableCollection 是一个具有写操作的 Collection 接口,例如 add 以及 remove ListList<T> 以制定的顺序存储元素,并提供使用索引访问元素的方法。索引从 0 开始。List 元素(包括空值)可以重复:List 可以包含任意数量的相同对象或单个对象的出现。如果两个 List 在相同的位置具有相同的大小和相同的结构的元素,则认为他们是相等的 MutableList 是可以进行写操作的 List,例如用于在特定位置添加或删除元素 List 与数组(Array)的区别:数组的大小是在初始化时定义的,永远不会改变;但是,List没有预定的大小,作为写操作的结果,可以更改 List 的大小:添加,更新或删除元素 List 的默认实现是 ArrayList,可以将其视为可调整大小的数组 Setset<T> 存储唯一的元素;它们的顺序通常是未定义的。null 元素也是唯一的:一个 Set 只能包含一个 null。当两个 set 具有相同的大小并且对于一个 set 中的每个元素都能在另一个 set 中存在相同元素,则两个 set 相等 MutableSet 是一个带有来自 MutableCollection 的写操作接口的 Set。 Set 的默认实现 LinkedHashSet——保留元素插入的顺序 MapMap<K, V> 不是 Collection 接口的继承者,但也是一种集合类型。Map 存储 键-值 对,键是唯一的,但是不同的键可以与相同的值配对。Map 接口提供特定的函数进行通过键访问值、搜索键和值等操作。无论键值对的顺序如何,包含相同键值对的两个 Map 是相等的 MutableMap 是一个具有写操作的 Map 接口,可以使用该接口添加一个新的键值对或更新给定键的值 Map 的默认实现 LinkedHashMap —— 迭代Map时保留元素插入的顺序;HashMap —— 不声明元素的顺序 构造集合由元素构造创建集合的最常用方法是使用标准库函数 listOf<T>()、setOf<T>()、mutableListOf<T>()、mutableSetOf<T>()。如果以逗号分隔的集合元素列表作为参数,编译器会自动检测元素类型。创建空集合时,需明确指定类型
空集合用于创建没有任何元素的集合的函数:emptyList()、emptySet() 和 emptyMap();创建空集合时,应指定集合将包含的元素类型
调用其他集合的函数可以通过其他集合各种操作的结果来创建集合。
迭代器Kotlin 标准库支持迭代器的常用机制——对象可按顺序提供对其元素的访问权限,而不会暴露集合的底层结构。当需要逐个处理集合的所有元素时,迭代器非常有用。 Iterable<T> 接口的继承者可以通过调用 iterator() 函数获得迭代器。一旦获得迭代器它就指向集合的第一个元素;调用 next() 函数将返回此元素,并将迭代器指向下一个元素(如果下一个元素存在)。一旦迭代器通过了最后一个元素,它就不能用于检索元素;也无法重新指向到以前的任何位置。要再次遍历集合,需创建一个新的迭代器
List 迭代器对于列表,有一个特殊的迭代器实现:ListIterator 它支持列表双向迭代:正向与反向。反向迭代由 hasPrevious() 和 previous() 函数实现。此外,ListIterator 通过 nextIndex() 与 previousIndex() 函数提供有关元素索引的信息
具有双向迭代的能力意味着 listIterator 在到达最后一个元素后仍可以使用 可变迭代器为了迭代可变集合,MutableIterator 来扩展 Iterator 使其具有元素删除函数 remove() MutableListIterator 可以在迭代列表时插入和替换元素
|
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:10:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |