takeWhile 、takeLastWhile、DropWhile、dropLastWhile、这四个方法傻傻分不清,还是用数字来判断最轻松,统一判断条件就很容易搞清楚各自代表的意思了。
val numbers = listOf(4,1, 2, 3,2,5,3 ,4,5,6,7,8)
println("-----------------多个元素不符合--------------")
println(numbers.takeWhile { it > 3 }) //返回list第一个元素到第一个不符合条件的元素之前的元素列表;list第一个元素不符合条件返回空
println(numbers.takeLastWhile { it > 3 }) //返回list最后一个元素倒序到最后一个不符合条件的元素之前的列表;list最后一个元素不符合条件返回空
println(numbers.dropWhile { it > 3 }) //和takeWhile完全相反,返回第一个不符合条件元素到list最后一个元素的元素列表
println(numbers.dropLastWhile { it > 3 }) //和takeLastWhile完全相反,返回list第一个元素到最后一个不符合条件元素的元素列表
println("-----------------只有1个元素不符合--------------")
val numbers2 = listOf(4,5,3 ,4,5,6,7,8)
println(numbers2.takeWhile { it > 3 })
println(numbers2.takeLastWhile { it > 3 })
println(numbers2.dropWhile { it > 3 })
println(numbers2.dropLastWhile { it > 3 })
println("---------------第1个元素不符合----------------")
val numbers3 = listOf(3,5,3 ,4,5,6,7,8)
println(numbers3.takeWhile { it > 3 })
println(numbers3.takeLastWhile { it > 3 })
println(numbers3.dropWhile { it > 3 })
println(numbers3.dropLastWhile { it > 3 })
println("---------------最后1个元素不符合----------------")
val numbers4 = listOf(4,5,3 ,4,5,6,7,3)
println(numbers4.takeWhile { it > 3 })
println(numbers4.takeLastWhile { it > 3 })
println(numbers4.dropWhile { it > 3 })
println(numbers4.dropLastWhile { it > 3 })
//下方是打印结果
-----------------多个元素不符合--------------
[4]
[4, 5, 6, 7, 8]
[1, 2, 3, 2, 5, 3, 4, 5, 6, 7, 8]
[4, 1, 2, 3, 2, 5, 3]
-----------------只有1个元素不符合--------------
[4, 5]
[4, 5, 6, 7, 8]
[3, 4, 5, 6, 7, 8]
[4, 5, 3]
---------------第1个元素不符合----------------
[]
[4, 5, 6, 7, 8]
[3, 5, 3, 4, 5, 6, 7, 8]
[3, 5, 3]
---------------最后1个元素不符合----------------
[4, 5]
[]
[3, 4, 5, 6, 7, 3]
[4, 5, 3, 4, 5, 6, 7, 3]
网友评论