Kotlin 文档入门-函数 集合
结合的创建-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 文档入门-函数 集合相关推荐
- 【Auto.JS】Autojs官方提取文档使用说明函数 (2)
接上一篇文章:Autojs官方提取文档使用说明函数 (1) Images Stability: 2 - Stable images模块提供了一些手机设备中常见的图片处理函数,包括截图.读写图片.图片剪 ...
- 前端框架:AntdUI 文档入门
目录 前端框架:Ant Design UI 文档入门 官方文档 · 在线地址: Ant Design Pro 版本文档 更多入口:`[如下图所示]` 前端框架:Ant Design UI 文档入门 你 ...
- 腾讯文档 - 入门使用手册
文章目录 腾讯文档 - 入门使用手册 使用 · 注意 · 事项: 1. 先阅读用户服务协议 2. 文档分享 3. 增加协同者.文档转让.权限设置 4. 文档指定区域锁定 5. 保存 腾讯文档 - 入门 ...
- Js和jQuery的文档就绪函数以及执行次数
https://www.cnblogs.com/yingyingh5/p/7786821.html 文档就绪函数的使用方法是: 完整方式: $(document).ready(fn) 或者jQuery ...
- JQuery语法 JQuery对象与原生对象互转 文档就绪函数与window.onload的区别
[JQuery语法] 1.jQuery("选择器").action();通过选择器调用事件函数,但是jquery中,jquery可以用$("选择器").acti ...
- jQuery文档初始化函数原理
在jQuery的脚本使用中,经常注册文档初始化函数,比如:$(function(){}); 那么这句话原理是什么呢? 原理一.把completed函数注册到文档加载的原生事件中 关键在这一句docum ...
- Python进行office操作 - 用Python读写Word文档入门
目录 0.场景 1.安装python-docx模块 2.读取Word文档 3.写入Word文档 (1)全局样式介绍 (2)调整word样式 (3)创建并写入word (4)设置多段落 (5)设置标题 ...
- Mongoose在向集合中插入文档时的集合命名问题
原文链接:http://www.cnblogs.com/wx1993/p/5243245.html Mongoose使用结构化的模式应用到MongoDB集合,为MongoDB Node.js原生驱动程 ...
- 游戏开发,策划文档入门指南
在线体验: https://test.bitgame-inc.com/webgame/ct/index.html <梦幻厨房>目前是晓衡在线微店上出售最火的,做了两次的版本更新,修复了在微 ...
- Html转Pdf文档入门汇总
目录 Html转Pdf文档 转化方式说明 PDF文件格式介绍 PDF类型 PDF文件结构可分为以下几块: header body Cross reference table trailer: Itex ...
最新文章
- 多模态大模型——通用人工智能路径的探索
- android studio gradle版本太低问题解决方案
- 应用抽象工厂模式自己动手写一个ioc
- 洛谷 P1663 山
- LeetCode MySQL 1623. 三人国家代表队
- ps html css 工具,认识Photoshop(PS)CSS切图必用工具
- CENTOS6 X64 LAMP+GD SHELL脚本
- 2017/2/25 学习笔记
- 《深入浅出通信原理》学习(1-8)
- MISRA C 2004
- LiteIDE中运行GO
- 04L型匹配和T型匹配的核心算法
- 忘记电脑开机密码怎么办
- U3D Distortion
- mysql LAST_DAY() 函数
- python——通信原理,进程与线程
- 微信投票1人1票php制作,微信投票怎么刷票,微信人工投票1毛一票
- Unity做一个太阳系
- 谈谈幼儿时期的孤独和成年后的残忍
- 爬虫python代码网易云_使用python爬取网易云歌曲下载时为0KB的解决方法 | ZPY博客...
热门文章
- [机器学习笔记]奇异值分解SVD简介及其在推荐系统中的简单应用
- (转)jquery对表单元素的取值和赋值
- HDU 2188 (巴什博弈)
- 2014-5-19 思杨回来后的第一个周末,教训,痛并快乐着
- [Java]一则自定义的XStream转换器,主要用于POJO XML反序列化为Map/List
- 非受检异常_Java异常(Exception)类型及处理
- spring中如何实现参数隐式传递_Java进阶架构之开源框架面试题系列:Spring+SpringMVC+MyBatis(含答案分享)...
- 脚本之家python专题_一个简单的python读写文件脚本
- 在Windows编译libssh
- DPDK - RSS