结合的创建-List

首先.一下试试

三种List 查一查 关于这三种的说明

其实都没啥不一样 貌似是用 mutable 比较好

在 Kotlin 中,List 的默认实现是 ArrayList,可以将其视为可调整大小的数组。  这个是官网的原话...

貌似是 mutable 更 功能一些 更兼容

同理map 也是

增加:

//包含100val toMutableList = (0..100).toMutableList()println(toMutableList)

增强循环-foreach

首先先统计一下遍历的方式

一.

        // a 代表元素for (a in list){println(a)}

二.

      // 很lowfor (i in 0..list.size-1) {println(list[i])}

二 升级

       for (index in list.indices) {println(list[index])}

三.

it指代元素

       list.forEach {println(it)}

集合过滤器-filter

首先是fliter

联想到Intent-filter  可以在你需要这个功能的地方.一下fliter 试试

筛选所有 首字节是"a"的

val fruits = listOf("banana", "avocado", "apple", "kiwifruit").filter { it.startsWith("a") }.forEach { println(it) }
2019-10-22 10:45:48.104 14586-14586/com.as.app2 I/System.out: avocado
2019-10-22 10:45:48.104 14586-14586/com.as.app2 I/System.out: apple

然后是排序

 val fruits = listOf("banana", "avocado", "apple", "kiwifruit")fruits.filter { it.startsWith("a") }.sortedBy { it }.forEach { println(it) }
2019-10-22 10:49:33.226 23859-23859/? I/System.out: apple
2019-10-22 10:49:33.226 23859-23859/? I/System.out: avocado

可以看到第二字母也排序了

同样类似于Java Collections.sort

list.sort   1 2 3 4  | a b c  d   先按第一个字节进行排序的

sort : 默认是按照字母的 abcd 1 2 3 4 排序的     升序

sorDescending :降序

sortBy: 加入排序条件  

numbers.sortBy { it.length } 按照字符串长度进行排序

sortwith:将对象按照一定规则排序  这个很简单

        val numbers = mutableListOf("one" to 1, "two" to 3, "three" to 4, "four" to 2)numbers.sortWith(compareBy({ it.first }, { it.second }))println(numbers)
2019-10-23 09:57:31.820 22399-22399/com.as.app2 I/System.out: [(four, 2), (one, 1), (three, 4), (two, 3)]

sortedwith:这个方法尤其注意不能弄混了 因为这个是返回一个新的集合


字母全部大写

val fruits = listOf("banana", "avocado", "apple", "kiwifruit")fruits.filter { it.startsWith("a") }.sortedBy { it }.map { it.toUpperCase() }.forEach { println(it) }
2019-10-22 13:15:48.071 29739-29739/? I/System.out: APPLE
2019-10-22 13:15:48.072 29739-29739/? I/System.out: AVOCADO

集合添加元素

java里边直接添加元素的是add addAll

kotlin 也有这些 相对来说 比较秀

 val fruits = mutableListOf("banana", "avocado", "apple", "kiwifruit")fruits+="我是添加的元素"fruits+= listOf("哈哈","呵呵","嘿嘿")println(fruits)

可以直接使用+= 来添加元素 ,如果添加的是一个集合 也可以

2019-10-22 13:48:22.938 8232-8232/com.as.app2 I/System.out: [banana, avocado, apple, kiwifruit, 我是添加的元素, 哈哈, 呵呵, 嘿嘿]

集合移除元素

和java一样Remove(元素)   RemoveAt(下标)   clear移除所有

相对来说kotlin 确实在这些方面比较方便

如果你要一个一个的 移除某些元素

你可以removeAll(  listof() )

val fruits = mutableListOf("banana", "avocado", "apple", "kiwifruit")fruits+="我是添加的元素"fruits+= listOf("哈哈","呵呵","嘿嘿")fruits.removeAll (listOf("banana","apple") )println(fruits)

同样的

fruits-=listOf("banana","apple")

另外,kotlin有一个新的方法

只保留

fruits.retainAll(listOf("banana","apple"))
2019-10-22 14:03:46.256 14622-14622/? I/System.out: [banana, apple]

集合按索引获取数据

list.get[ 0 ]

list[ 0 ]

数组和集合 通了呗

安全获取

getOrNull
getOrElse
val fruits = mutableListOf("banana", "avocado", "apple", "kiwifruit")println(fruits.getOrNull(4))
2019-10-22 14:16:01.124 12715-12715/? I/System.out: null

这个运行木有报错

没有找到下标的话使用默认

val fruits = mutableListOf("banana", "avocado", "apple", "kiwifruit")println(fruits.getOrElse(6,{"banana"}))
2019-10-22 14:18:47.715 19117-19117/com.as.app2 I/System.out: banana

截取一段

val numbers = mutableListOf("a0", "b1", "c2", "d3","e4","f5","g6")//取下标3 4 5 println(numbers.subList(3, 6))//不包含
2019-10-22 14:41:32.883 13739-13739/com.as.app2 I/System.out: [d3, e4, f5]

获取元素位置

indexof  和 lastindexof

  val numbers = mutableListOf("a0", "b1", "c2", "d3", "e4", "f5", "g6")//没有找到元素的话不报错 返回-1println(numbers.indexOf("b6"))//indexof和lastindexof区别在于有相同字符串的话会找相同字符串的最后一位println(numbers.lastIndexOf("b1"))
2019-10-22 14:45:34.037 23526-23526/com.as.app2 I/System.out: -1
2019-10-22 14:45:34.037 23526-23526/com.as.app2 I/System.out: 1

indexOf() : 查找某一个元素或字符串在原字符串中第一次出现的下标。
indexLastOf() : 查找某一个元素或字符串在原字符串中最后一次出现的下标。
indexOfFirst{} : 同indexOf()
indexOfLast{} : 同indexLastOf()

所以换一个样式

//没有找到元素的话不报错 返回-1println(numbers.indexOfFirst { it == "b6" })println(numbers.indexOfLast {  it == "b1" })

打印出来是一样的


二分查找

kotlin 一个封装好的 搜索方法-> BinarySearch()

如果没有找到这个元素 就返回   -1

如果找到了 就会返回 下标

val numbers = mutableListOf("a0", "b1", "d2", "e3", "e4", "f5", "a6")println(numbers.binarySearch("e3"))
2019-10-22 15:08:03.524 17131-17131/? I/System.out: 3

自定义数据进查找

class Product(var name: String, var price: Double)
val productList = listOf(Product("WebStorm", 49.0),Product("AppCode", 99.0),Product("DotTrace", 129.0),Product("ReSharper", 149.0))println(productList.binarySearch(Product("AppCode", 99.0), compareBy<Product> { it.price }.thenBy { it.name }))

这个是中文官网给的例子 ,确实是返回数据的下标 但是如果你的 数据不是唯一 ,名字有重的 或者价格有重的 你可以试着吧 thenBy 去掉

thenBy 类似于 && 的意思

官网例子

val list = listOf("aa", "b", "bb", "a")val lengthComparator = compareBy<String> { it.length }
println(list.sortedWith(lengthComparator)) // [b, a, aa, bb]val lengthThenString = lengthComparator.thenBy { it }
println(list.sortedWith(lengthThenString)) // [a, b, aa, bb]

替换所有集合元素

val numbers = mutableListOf("one" , "two" , "three", "four")numbers.fill("a")println(numbers)
2019-10-23 10:01:57.627 15736-15736/com.as.app2 I/System.out: [a, a, a, a]

那么替换单个元素

 val numbers = mutableListOf("one" , "two" , "three", "four")numbers[2]="xxx"println(numbers)
2019-10-23 10:03:53.277 26876-26876/com.as.app2 I/System.out: [one, two, xxx, four]

随机打乱元素

shuffle

val numbers = mutableListOf("one" , "two" , "three", "four")numbers.shuffle()println(numbers)

倒过来

reverse

需要主要Koltin 一个 方法的返回值 方面 Unit

有返回的 都得用返回的新对象才有变化的 早早踩坑

遍历方式:

 val lists = mutableListOf<String>()lists.add("index0")lists.add("index1")lists.add("index2")lists.add("index3")for ((index, value) in lists.withIndex()) {println( "$index"  +value)}

Kotlin 文档入门-函数 集合相关推荐

  1. 【Auto.JS】Autojs官方提取文档使用说明函数 (2)

    接上一篇文章:Autojs官方提取文档使用说明函数 (1) Images Stability: 2 - Stable images模块提供了一些手机设备中常见的图片处理函数,包括截图.读写图片.图片剪 ...

  2. 前端框架:AntdUI 文档入门

    目录 前端框架:Ant Design UI 文档入门 官方文档 · 在线地址: Ant Design Pro 版本文档 更多入口:`[如下图所示]` 前端框架:Ant Design UI 文档入门 你 ...

  3. 腾讯文档 - 入门使用手册

    文章目录 腾讯文档 - 入门使用手册 使用 · 注意 · 事项: 1. 先阅读用户服务协议 2. 文档分享 3. 增加协同者.文档转让.权限设置 4. 文档指定区域锁定 5. 保存 腾讯文档 - 入门 ...

  4. Js和jQuery的文档就绪函数以及执行次数

    https://www.cnblogs.com/yingyingh5/p/7786821.html 文档就绪函数的使用方法是: 完整方式: $(document).ready(fn) 或者jQuery ...

  5. JQuery语法 JQuery对象与原生对象互转 文档就绪函数与window.onload的区别

    [JQuery语法] 1.jQuery("选择器").action();通过选择器调用事件函数,但是jquery中,jquery可以用$("选择器").acti ...

  6. jQuery文档初始化函数原理

    在jQuery的脚本使用中,经常注册文档初始化函数,比如:$(function(){}); 那么这句话原理是什么呢? 原理一.把completed函数注册到文档加载的原生事件中 关键在这一句docum ...

  7. Python进行office操作 - 用Python读写Word文档入门

    目录 0.场景 1.安装python-docx模块 2.读取Word文档 3.写入Word文档 (1)全局样式介绍 (2)调整word样式 (3)创建并写入word (4)设置多段落 (5)设置标题 ...

  8. Mongoose在向集合中插入文档时的集合命名问题

    原文链接:http://www.cnblogs.com/wx1993/p/5243245.html Mongoose使用结构化的模式应用到MongoDB集合,为MongoDB Node.js原生驱动程 ...

  9. 游戏开发,策划文档入门指南

    在线体验: https://test.bitgame-inc.com/webgame/ct/index.html <梦幻厨房>目前是晓衡在线微店上出售最火的,做了两次的版本更新,修复了在微 ...

  10. Html转Pdf文档入门汇总

    目录 Html转Pdf文档 转化方式说明 PDF文件格式介绍 PDF类型 PDF文件结构可分为以下几块: header body Cross reference table trailer: Itex ...

最新文章

  1. 多模态大模型——通用人工智能路径的探索
  2. android studio gradle版本太低问题解决方案
  3. 应用抽象工厂模式自己动手写一个ioc
  4. 洛谷 P1663 山
  5. LeetCode MySQL 1623. 三人国家代表队
  6. ps html css 工具,认识Photoshop(PS)CSS切图必用工具
  7. CENTOS6 X64 LAMP+GD SHELL脚本
  8. 2017/2/25 学习笔记
  9. 《深入浅出通信原理》学习(1-8)
  10. MISRA C 2004
  11. LiteIDE中运行GO
  12. 04L型匹配和T型匹配的核心算法
  13. 忘记电脑开机密码怎么办
  14. U3D Distortion
  15. mysql LAST_DAY() 函数
  16. python——通信原理,进程与线程
  17. 微信投票1人1票php制作,微信投票怎么刷票,微信人工投票1毛一票
  18. Unity做一个太阳系
  19. 谈谈幼儿时期的孤独和成年后的残忍
  20. 爬虫python代码网易云_使用python爬取网易云歌曲下载时为0KB的解决方法 | ZPY博客...

热门文章

  1. [机器学习笔记]奇异值分解SVD简介及其在推荐系统中的简单应用
  2. (转)jquery对表单元素的取值和赋值
  3. HDU 2188 (巴什博弈)
  4. 2014-5-19 思杨回来后的第一个周末,教训,痛并快乐着
  5. [Java]一则自定义的XStream转换器,主要用于POJO XML反序列化为Map/List
  6. 非受检异常_Java异常(Exception)类型及处理
  7. spring中如何实现参数隐式传递_Java进阶架构之开源框架面试题系列:Spring+SpringMVC+MyBatis(含答案分享)...
  8. 脚本之家python专题_一个简单的python读写文件脚本
  9. 在Windows编译libssh
  10. DPDK - RSS