kotlin:集合

集合

Kotlin 区分可变集合与不可变集合

容器:数组长度固定,集合长度可变.

数组存储数据,集合存储对象.对象的类型可以不一致

1.分类

1.1 单列集合Collection:

List集合元素有序可重复

Set集合元素无序,不可重复

​ TreeSet有序不重复的集合

1.2 双列集合Map,存储映射对象
1.3 集合的创建:

​ Of创建不可变集合,mutableOf创建可变集合.

​ mutableOf只能用于接口,Of还可用于实现类创建

在非性能关键代码中创建 map 可以用一个简单的惯用法来完成: mapOf(a to b, c to d)

​ listOf,setOf,mapOf

​ MutableCollection,mutableListOf,mutableSetOf,mutableMapOf

2.List集合

listOf创建的集合不可变,元素不可修改

fun main(args: Array) {
val list1 = listOf("林青霞","张曼玉","关之琳")
}

mutableListOf创建的集合元素可以修改

val list2 = mutableListOf("林青霞","张曼玉","关之琳")
list2.add("雪儿")
list2.set(1,"李若彤")

或者

    val list3 = MutableList(10){
        "茵"
    }               //创建一个10个元素为"茵"的List可变集合

也可使用JAVA的集合体系

    val list4 = ArrayList()
    val list5 = arrayListOf("张三","李四","王五")

3.Map集合

val map4 = hashMapOf("中国" to "China","英国" to "England","美国" to "USA")
 map4.put("中国","Chinese")
    val map5 = mutableMapOf("南海" to "南", "东海" to "东")
    map5.putAll(map4)
    println(map5)

遍历

map.keys 
map.values

4.去重复

​ distinctBy,返回重复的元素集合

​ toSet,distinct为空参,去除重复的元素,返回集合

fun main(args: Array) {
    val list = listOf("张三","李四","李四","王五","赵六","张三","张四","李六")
        println(list.distinctBy {
        it == "张三"
    })
}                                  //[张三, 李四]

5.过滤(find和filter)

find返回集合中第一个满足条件的元素

filter返回集合中满足条件的集合

fun main(args: Array) {
    val list2 = listOf("周芷若","张无忌","张五","李善长","林青霞","李寻欢")
        val s1 = list2.find {
        it.startsWith("张")
    }
   println(s1)                         //张无忌
    val zhangList = list2.filter {
        it.startsWith("张")
    }
    println(zhangList)
}                                      //[张无忌, 张五]

6.排序 sorted

对汉字字符串排序,只会把姓放在相邻位置

fun main(args: Array) {
    val list = listOf("g", "u", "q", "n", "d", "z", "a")
      val list1 = list.sorted()                     //正序排序
      println(list1)  
      val list2 = list.sortedDescending()           //倒序排序
      println(list2)
   val personList = listOf(Person("林青霞",50),Person("张曼玉",30),Person("郑少秋",70))
   val list5 = personList.sortedBy {                 //按字段排序
        it.age
    } 

7.分组 groupBy

fun main(args: Array) {
    val list = listOf("张三", "张三", "李四", "王五", "赵六", "张四", "李五", "李六")
      val map = list.groupBy {
        val firstChar = it.substring(0, 1)
        when (firstChar) {
            "张" -> "张"
            "李" -> "李"
            else -> "其它"
        }
    }
    println(map)
}

8.最值 max,min,maxBy,minBy

fun main(args: Array) {
    val list = listOf("z", "e", "t", "n")
    val max = list.max()
    val min = list.min()
    val personList = listOf(Person("林青霞",50),Person("张曼玉",30),Person("郑少秋",70))
    val maxAge = personList.maxBy { it.age }
     println(personList.minBy { it.age })
}

9.集合拆分 partition

fun main(args: Array) {
    val list = listOf("张三","李四","王五","赵六","张四","李五","李六")
        val pair = list.partition {
        it.substring(0,1)=="张"
    }
    println(pair.first)
    println(pair.second)
}

10.集合重新组合(map)

fun main(args: Array) {
    val personList = listOf(Person("林青霞",50),Person("张曼玉",30),Person("郑少秋",70))
      val nameList =  personList.map {
    }
    println(nameList)
}

11.元素相加(sumby/sumbydouble)

你可能感兴趣的:(kotlin:集合)