Kotlin实战【六】Kotlin中集合的创建

时间:2024-10-09 07:24:50

kotlin中的集合

Kotlin中的集合分为两派:可变集合不可变集合
在这里插入图片描述

  • 列表:List/MutableList;
  • 集:Set/MutableSet;
  • 映射:Map/MutableMap;
  • 集:Collection/MutableCollection;
  • 迭代器:Iterable/MutableIterable;

所谓可变就是支持读、写、删,不可变只支持读

我们从下面详细对比中可以发现:

public interface Collection<out E> : Iterable<E>{...}

public interface MutableCollection<E> : Collection<E>, MutableIterable<E>{...}

在这里插入图片描述

public interface List<out E> : Collection<E> {...}

public interface MutableList<E> : List<E>, MutableCollection<E> {...}

在这里插入图片描述

public interface Set<out E> : Collection<E> {...}

public interface MutableSet<E> : Set<E>, MutableCollection<E>{...}

在这里插入图片描述

public interface Map<K, out V>{...}

public interface MutableMap<K, V> : Map<K, V> {...}

在这里插入图片描述

如何创建集合

List

val emptyList = emptyList<String>() //创建空的List
val list = listOf<String>("132", "321", "liming") //创建普通的List
val mutList = mutableListOf<Int>(652, 123, 4564) //创建可修改的List
  • 1
  • 2
  • 3

set

val emptySet = emptySet<String>() //创建空的Set
val set = setOf<String>("123", "3212", "sadsa") //创建一个普通的Set
val mutSet = mutableSetOf<Int>(123, 21, 852) //创建一个可变的Set
val hashSet = hashSetOf<Int>(123, 21, 852) //创建一个可变HashSet
val linkedSet = linkedSetOf<Int>(123, 21, 852) //创建一个LinkedHashSet
val sortedSet = sortedSetOf<Int>(123, 21, 852) //创建一个SortedSet
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

map

val emptyMap = emptyMap<Int, String>() //创建一个空的<Integer,String>的Map
val map = mapOf<Int, String>(1 to "haha", 2 to "lala") //创建一个普通的map
val mutMap = mutableMapOf<Int, String>(1 to "haha", 2 to "lala") //创建一个可变的map
val hashMap = hashMapOf<Int, String>(1 to "haha", 2 to "lala") //创建一个hashMap
val linkedMap = linkedMapOf<Int, String>(1 to "haha", 2 to "lala") //创建一个linkedMap
val sortedMap = sortedMapOf<Int, String>(1 to "haha", 2 to "lala") //创建一个sortedMap
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

to并不是一个特殊的结果,而是一个普通的函数

kotlin中的集合与Java中集合的关系

接下来让我们看一下创建的对象类型:

println() //class $ArrayList
println() //class 
println() //class 
  • 1
  • 2
  • 3

如你所见,Kotlin并没有采用自己的集合类,而是采用标准的java集合类,这对java开发者来说是个好消息。

为什么Kotlin没有自己专门的集合类呢?

答: 因为使用标准的java集合类可以更好的和java交互。kotlin与java互调不用考虑集合类的转换。

尽管如此Kotlin并没有止步,而是在此基础上增加了很多方法,如:
获取列表中的最后一个元素,或者得到一个数字列表的最大值:

val strings = listOf<String>("first","second","third","last")
println(()) //输出 last

val numbers = setOf(1,11,-10,25,3,2)
println(())  //输出 25
println(())  //输出 -10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

更多骚操作请关注后续文章。