kotlin操作符(1)

元素操作符
生产操作符
顺序操作符
首先我想说的是,学习这些操作符应该从以下几个方面进行

  • 敲:在开发工具里面敲这些代码

  • 看:点击去看看操作符的源码

  • 跑:亲自跑一下代码,看看运行的结果

  • 思:综合思考这些操作符的意义,加深理解

  • 总数操作符

private val list= listOf(0,1,2,3,4,5,6,7,8,9)

//any 只要有一个符合就返回true
val any= list.any { it>8 }

//all 所有条件符合才返回true
val all= list.all { it>0 }

//count 返回符合条件的数目
val count= list.count { it>5 }

//none 如果没有任何元素与给定的函数匹配,则返回true
val none= list.none{it>10}

//fold 在一个初始值的基础上 从第一项到最后一项通过 一个函数操作 所有的元素。
//下面是初始值4 每项进行累加
val fold= list.fold(4){total,next->total+next}

//foldRight与fold一样,但是顺序是从最后一项到第一项。注意与fold的区别,参数位置调过来了
val foldRight=list.foldRight(4) { next, total -> total + next }

//reduce 从第一项到最后一项通过 一个函数操作 所有的元素,相对于fold,没有初始值
//reduceRight 是从后到前
val reduce= list.reduce { acc, i -> acc+i }

//forEach 遍历每个元素并且进行操作
val foreach= list.forEach { println(it) }

//forEachIndexed 与foreach相同,但是可以得到index
val forEachIndexed= list.forEachIndexed { index, value -> println(“$index -> $value”) }

//max 返回最大的值,如果没有则返回null min同
val max=list.max()

//maxBy 根据指定的函数返回最大值 minBy同
val maxBy=list.maxBy { -it }

//sumBy 每项经过函数转换后的和
val sumBy=list.sumBy { it+9 }

  • 过滤操作

private val list= listOf(0,1,2,3,4,5,6,5,4,3,2,1,0)

/**

  • drop 返回包含去掉前n个元素的所有元素的列表
  • Returns a list containing all elements except first [n] elements.
  • 返回[4, 5, 6, 5, 4, 3, 2, 1, 0]
    */
    val drop= list.drop(4)

/**

  • dropwhile 根据特定的函数 从第一项开始 直到不满足条件后返回 列表
  • Returns a list containing all elements except first elements that satisfy the given [predicate].
  • 返回[0, 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1, 0]
    */
    val dropwhile=list.dropWhile {it > 1 }

/**

  • dropLastWhile 返回根据特定的函数 从最后一项开始 直到不满足条件后返回 列表
  • Returns a list containing all elements except last elements that satisfy the given [predicate].
  • 返回[0, 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1, 0]
    */
    val dropLastWhile= list.dropLastWhile { it>4 }

/**
*filter 返回所有符合给定函数条件的元素。

  • Returns a list containing only elements matching the given [predicate].
  • [5, 6, 5]
    */
    val filter=list.filter { it>4 }

/**

  • filterNot 返回所有不符合给定函数条件的元素
  • Returns a list containing all elements not matching the given [predicate].
  • [0, 1, 2, 3, 4, 4, 3, 2, 1, 0]
    */
    val filterNot=list.filterNot { it>4 }

/**

  • filterNotNull 返回非null元素
  • Returns a list containing all elements that are not null.
  • [0, 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1, 0]
    */
    val filterNotNull= list.filterNotNull()

/**

  • 返回满足该ranger的元素集合
  • Returns a list containing elements at indices in the specified [indices] range.
  • [0, 1, 2, 3, 4, 5, 6]
    */
    val slice= list.slice(0…6)

/**

  • listOf(0,4,7)是集合list的坐标
  • Returns a list containing elements at specified [indices].
  • [0, 4, 5]
    */
    val slice2= list.slice(listOf(0,4,7))

/**
*返回前n项

  • Returns a list containing first [n] elements.
  • [0, 1, 2, 3]
    */
    val take= list.take(4)

/**

  • 返回后n项
  • Returns a list containing last [n] elements.
  • [3, 2, 1, 0]
    */
    val takeLast= list.takeLast(4)

/**

  • 从第一项开始判断,直到不符合就返回,返回符合的前几项数据
  • Returns a list containing first elements satisfying the given [predicate].
  • []
    */
    val takeWhile= list.takeWhile { it>4 }
  • 映射操作符

private val list= listOf(0,1,2,3,4,5,4,3,2,1,0,-1)

/**

  • 返回满足条件的集合
  • Returns a list containing the results of applying the given [transform] function
  • to each element in the original collection.
  • [false, false, false, true, true, true, true, true, false, false, false, false]
    */
    val map=list.map { it>2 }

/**

  • 返回特定函数后的集合,参数是Iterable类型,
  • Returns a single list of all elements yielded from results of [transform]
  • function being invoked on each element of original collection.
  • [0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 4, 5, 3, 4, 2, 3, 1, 2, 0, 1, -1, 0]
    */
    val flatMap=list.flatMap { listOf(it, it + 1) }

/**

  • 根据函数将集合分组,返回map类型对象
  • Groups elements of the original collection by the key returned by the given [keySelector] function
  • applied to each element and returns a map where each group key is associated with a list of corresponding elements.
  • The returned map preserves the entry iteration order of the keys produced from the original collection.
  • {false=[0, 1, 2, 3, 3, 2, 1, 0, -1], true=[4, 5, 4]}
  • @sample samples.collections.Collections.Transformations.groupBy
    */
    val groupBy=list.groupBy {value-> value>3 }

/**

  • 返回一个集合,通过 角标和值 来生成
  • Returns a list containing the results of applying the given [transform] function
  • to each element and its index in the original collection.
  • @param [transform] function that takes the index of an element and the element itself
  • and returns the result of the transform applied to the element.
  • [0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0, -1]
    */
    val mapIndexed=list.mapIndexed { index, value ->value}

/**

  • 返回一个每一个非null元素根据给定的函数转换所组成的List
  • Returns a list containing only the non-null results of applying the given [transform] function
  • to each element in the original collection.
  • [0, 2, 4, 6, 8, 10, 8, 6, 4, 2, 0, -2]
    /
    val mapNotNull=list.mapNotNull { it
    2 }
  • 元素操作符

private val list= listOf(0,1,2,3,4,5,6,4,3,2,1,0,-1)

//如果指定元素可以在集合中找到,则返回true。
val contains=list.contains(2)

/**

  • 返回给定index对应的元素,如果index数组越界则会 抛出IndexOutOfBoundsException
  • Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this collection.
  • 2
    */
    val elementAt=list.elementAt(2)

/**

  • 返回给定index对应的元素,如果index数组越界则会根据给定函数返回默认值,第二个参数default,lamdba表达式
  • Returns an element at the given [index] or the result of calling the [defaultValue]
  • function if the [index] is out of bounds of this collection.
  • 2
    */
    val elementAtOrElse=list.elementAtOrElse(2){“error”}

/**

  • 返回给定index对应的元素,如果index数组越界则会 返回null
  • Returns an element at the given [index] or null if the [index] is out of bounds of this list.
  • null
    */
    val elementAtOrNull=list.elementAtOrNull(19)

/**

  • Returns first element.
  • @throws [NoSuchElementException] if the list is empty.
  • 0
    */
    val first=list.first()

/**

  • 返回符合给定函数条件的第一个元素,没有回抛异常
  • Returns the first element matching the given [predicate].
  • @throws [NoSuchElementException] if no such element is found.
  • 4
    */
    val first2=list.first { it>3 }

/**

  • 返回符合给定函数条件的第一个元素,如果没有符合则返回null
  • Returns the first element matching the given [predicate], or null if element was not found.
  • null
    */
    val firstOrNull=list.firstOrNull { it>9 }

/**

  • 返回指定元素的第一个index,如果不存在,则返回-1
  • Returns the index of the first occurrence of the specified element in the list, or -1 if the specified
  • element is not contained in the list.
  • 3
    */
    val indexOf=list.indexOf(3)

/**

  • 返回第一个符合给定函数条件的元素的index,如果没有符合则返回-1
  • Returns index of the first element matching the given [predicate], or -1 if the list does not contain such element.
  • 0
    */
    val indexOfFirst=list.indexOfFirst { it%3==0 }

/**

  • 返回最后一个符合给定函数条件的元素的index,如果没有符合则返回-1
  • Returns index of the last element matching the given [predicate], or -1 if the list does not contain such element.
  • 11
    */
    val indexOfLast=list.indexOfLast { it%3==0 }

/**

  • 返回符合给定函数条件的最后一个元素,没有抛异常
  • Returns the last element matching the given [predicate].
  • @throws [NoSuchElementException] if no such element is found.
  • 6
    */
    val last=list.last { it>4 }

/**

  • 返回指定元素的最后一个index,如果不存在,则返回-1
  • Returns the index of the last occurrence of the specified element in the list, or -1 if the specified
  • element is not contained in the list.
  • 8
    */
    val lastIndexOf=list.lastIndexOf(3)

/**

  • 返回符合给定函数条件的最后一个元素,如果没有符合则返回null
  • Returns the last element matching the given [predicate], or null if no such element was found.
  • null
    */
    val lastOrNull=list.lastOrNull { it>8 }

/**

  • 返回符合给定函数的单个元素,如果没有符合或者超过一个,则抛出异常
  • Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.
  • 6
    */
    val single=list.single { it>5 }

/**

  • 返回符合给定函数的单个元素,如果没有符合或者超过一个,则返回null
  • Returns the single element matching the given [predicate], or null if element was not found or more than one element was found.
  • null
    */
    val singleOrNull=list.singleOrNull { it>8 }

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
NHaM-1715680870704)]

[外链图片转存中…(img-MRz61WWi-1715680870705)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值