Kotlin/Java之常用“集合型”数据类型
Posted happydeer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin/Java之常用“集合型”数据类型相关的知识,希望对你有一定的参考价值。
<数组 Array>
整型数组初始化:val point = intArrayOf(0, 0) // 对应Java变量类型 int[] outLocation
其他还有:charArrayOf、byteArrayOf、longArrayOf、floatArrayOf、booleanArrayOf等,详见Library.kt
泛型:
val array = arrayOf(1, 2, 3)
val array = arrayOf("a", "b", "c") // 没有mutableArrayOf()!!!
<数组列表 ArrayList>
// ArrayList、HashMap、HashSet等定义在 TypeAliases.kt
数据对象数组
data class Feature(val name: String, val value: Int, var supported: Boolean = false)
val effectList = ArrayList<Feature>()
effectList.add(Feature("tick", "100", true))
...
val list = ArrayList<String>()
list.add("a")
...
val list = arrayListOf("Shanghai", 200, 3.14)
list.add("Beijing")
...
val map = HashMap<String, Int>()
map.put("Apple", 1)
map["Banara"] = 2
...
== Array与ArrayList的主要区别 ==
* 初始化:Array须指定大小,ArrayList不必
* Array只能存同构对象(声明为object[]的除外),ArrayList可以存异构
* Array不能增删元素,ArrayList可以
Array.toList() 可以返回一个List<T>列表
ArrayList.toArray() 可以返回一个object[]数据
参考文章:https://www.cnblogs.com/java-friend/p/11770169.html
List有两个具体实现:ArrayList和LinkedList
ArrayList底层是由数组实现的,实现一个可变长度的动态数组;
LinkedList是一个双链表,在添加和删除元素时具有比ArrayList更好的性能,但在get与set方面弱于ArrayList。
****** List、Set、Map ****** // 没有mutableArrayOf() !!!
快速初始化 val list = listOf("Apple", "Banana", "Orange") // 创建了不可变list,对比 mutableListOf
初始化可变列表 val list = mutableListOf("Apple", "Banana", "Orange") // 后续可以调用list.add("Pear")
遍历:
for (fruit in list)
println(fruit)
list.forEach
println(it)
类似,val set = setOf("Apple", "Banana", "Orange") // 以及mutableSetOf
set与list的区别:set底层使用hash映射机制来存储数据,集合中的元素无法保证有序!
val map = mapOf("Apple" to 1, "Banana" to 2, "Orange" to 5) // 以及mutableMapOf
for ((fruit, number) in map)
println("$fruit - $number")
****** Kotlin集合的函数式API ****** // 详见_Collections.kt
val ele = list.maxByOrNull it.length // 按“规则”取最大值,e.g. 字符串最长的那个
val newList = list.map it.uppercase() // 按“规则”做映射生成新list,e.g. 全部转成大写字母
val newList = list.filter it.length <= 5 // 按“规则”过滤生成新list,e.g. 挑出长度不大于5的元素
判断函数:
val result = list.any it.length <= 5 // 返回布尔型,判断:集合中是否存在至少一个元素满足指定条件
val result = list.all it.length <= 5 // 返回布尔型,判断:集合中是否所有元素满足指定条件
****** 数据库 ******
val values = ContentValues() // [对比] map中元素的key/value是固定类型
values.put("name", "Game of Thrones")
values.put("price", 38.8)
...
// KTX库中提供的便捷用法
val values = contentValuesOf("name" to "Game of Thrones", "price" to 38.8, "pages" to 800)
以上是关于Kotlin/Java之常用“集合型”数据类型的主要内容,如果未能解决你的问题,请参考以下文章