kotlin中的集合分为两类:可变集合与不可变集合
Iterable接口声明了Kotlin中集合的通用方法,是最基本的接口
MutableIterable接口继承Iterable,继承该接口的可以被迭代,可以在迭代期间移除元素
Collection接口继承了Iterable,是集合通用的接口,但是只封装了只读的方法
MutableConllection<E> 接口继承了Iterable和Collection,封装了添加和移除的方法
- List
List<E>接口继承于Collection<E>,对于存放其中的元素只提供只读操作,其他的特性跟JAVA中的list是一样的,初始化为listOf()
var items = listOf<Int>(1,2,3,4,5,6)
for (item in items){
println("item $item")
}
var it: Iterator<Int> = items.iterator()
while(it.hasNext()){
println("it.next ${it.next()}")
}
item 1
item 2
item 3
item 4
item 5
item 6
it.next 1
it.next 2
it.next 3
it.next 4
it.next 5
it.next 6
- MutableList<T>接口继承于List<T>,MutableCollection<E>,并对只读集合进行了扩展,增加了添加和删除操作,特性同List,不过添加了对集合的修改操作,对象创建通过
mutableListof()
,这里注意下toList()
函数,MutableCollection.toList()
返回一个只读集合List - Map
Map并没有继承于Collection接口,与list一样分为只读和可变两种map
创建方式通过mapOf
创建,
var items = mapOf<Int,String>(0 to "c",1 to "h",2 to "u",3 to "a",4 to "h")
items.forEach{
println("key:${it.key} value: ${it.value}")
}
输出:
key:0 value: c
key:1 value: h
key:2 value: u
key:3 value: a
key:4 value: h
其次还可以通过Pair直接创建
var itemms = mapOf(Pair(0,"c"), Pair(1,"h"),Pair(2,"u"),Pair(3,"a"),Pair(3,"h"))
var IteratorIterator = itemms.iterator()
while (IteratorIterator.hasNext()){
println("parir " + IteratorIterator.next())
}
输出为:
parir 0=c
parir 1=h
parir 2=u
parir 3=h
可以看到 下标为3的值变成了h,本来应该是a,然后被覆盖了,因此,Pair的第一个入参可以看做是Map的key值,第二个入参则是Map的value值,其他关于Pair的知识,暂不介绍
使用HashMap val hashMap = hashMapOf(1 to bookA, 2 to bookB)
使用LinkedHashMap val linkedHashMap = linkedMapOf(1 to bookA, 2 to bookB)
- MutableMap 可对集合执行操作的集合
- Set
- MutableSet 可变集合
网友评论