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<String>) {
val list1 = listOf("林青霞","张曼玉","关之琳")
}

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

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

或者

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

也可使用JAVA的集合体系

    val list4 = ArrayList<String>()
    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<String>) {
    val list = listOf("张三","李四","李四","王五","赵六","张三","张四","李六")
        println(list.distinctBy {
        it == "张三"
    })
}                                  //[张三, 李四]

5.过滤(find和filter)

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

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

fun main(args: Array<String>) {
    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<String>) {
    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<String>) {
    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<String>) {
    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<String>) {
    val list = listOf("张三","李四","王五","赵六","张四","李五","李六")
        val pair = list.partition {
        it.substring(0,1)=="张"
    }
    println(pair.first)
    println(pair.second)
}

10.集合重新组合(map)

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

11.元素相加(sumby/sumbydouble)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 文:沙澜 韵:平水韵 诗书文墨盈于腹, 风度翩翩。 植树堂前, 暮去朝来干渐坚。 春风又绿昔时地, 鬓已霜缠。 桃...
    沙澜阅读 736评论 2 22
  • 走着 走着 就发现 自己不见了 现在的 如同行尸走肉的 不是我 我似乎是 消失在了 平庸的路上
    愚者知之阅读 98评论 0 0
  • 身为一只小个子女生,天天与时装天人交战。 哪怕是最小号穿在身上竟然也有种穿着大人衣服的感觉,这种欲哭无泪的心情,我...
    帅鹿是小太阳阅读 192评论 2 5
  • 放心,吃胖了以后就吃不胖了。...
    UIE阅读 250评论 0 0