一、可变集合与不可变集合有哪些?
Kotlin集合框架在kotlin.collections包内,如下:
接口:
Iterable<E>与MutableIterable<E>;Iterator<E>与MutableIterator<E>;Collection<E>与MutableCollection<E>;List<E>与MutableList<E>;Set<E>与MutableSet<E>;ListIterator<E>与MutableListIterator<E>;Map<E>与MutableMap<E>;
抽象类:
AbstractCollection<E>与MutableAbstractCollection<E>;AbstractIterator<E>与MutableAbstractIterator<E>;AbstractList<E>与MutableAbstractList<E>;AbstractSet<E>与MutableAbstractSet<E>;AbstractMap<E>与MutableAbstractMap<E>;
Kotlin集合框架只定义了接口和抽象类,没有定义具体实现类,具体实现都交由Java集合框架。
二、两者的区别
理解Kotlin集合,关键在于理解可变与不可变,指的是集合内部的元素和元素的组织方式,而不在于集合类型变量是val还是var。可变集合,变的是元素的值、集合内元素的排列、数量等。
Kotlin集合框架里,所有的可变集合都继承自相同的不可变集合。
不可变集合只能对元素进行读取和查询,可变集合才能对元素进行增减和赋值。
相对于Java集合,Kotlin的不可变集合只拥有一部分功能,可变集合才拥有完整的功能。
随时随地看视频