在芬兰湾的科特林开发中如何使用集合详解

  


  

  

使用芬兰湾的科特林开发安卓应用在Java工程师群体中变得越来越流行。如果你由于某些原因错过了芬兰湾的科特林,我们强烈建议你看一下这篇文章。
  

  

对于那些处在技术前沿和喜欢芬兰湾的科特林的开发者来说,本篇文章和他们息息相关。所以,下面就让我们来看一下怎样在芬兰湾的科特林中使用集合吧。
  

  

芬兰湾的科特林中的集合是基于Java集合的框架。本篇文章主要讲的是芬兰湾的科特林。集合包中的几个特性。
  

  


  

  

芬兰湾的科特林中有一个拓展函数的特性,这个特性可以使芬兰湾的科特林标准库(stdlib)支持JDK的中的类的方法。举个例子:如果你打开芬兰湾的科特林标准库中的open_Collection。kt文件,你可以找到很类似于下面这样的方法:
  

     /* *   *返回一个列表,其中包含>   val originalList=自然(1、2、3、4、5、6)   assertequal(列入(2、4、6),originalList。过滤器{% 2==0})   val originalList=自然(1,2,3,4,5,6,7,8,9,10)=originalList val的结果。firstOrNull{比;4}   assertequal(因此,5)   val originalList=自然(1,2,3,4,5,6,7,8,9,10)   val结果=originalList.getOrElse (12) {12}   assertequal(因此,12)   val originalList=自然(1,2,3,4,5,6,7,8,9,10)=originalList val的结果。dropWhile {& lt;5}   assertequal(因此,列入(5、6、7,8,9,10))   val originalList=自然(1,2,3,4,5,6,7,8,9,10)   val结果=originalList   .dropWhile {& lt;5}   ;但{& lt;7}   assertequal(因此,5)      

你需要注意的是:过滤器和dropWhile就像其他操作符一样,返回的是一个新的事例。这意味着originalList不会改变。
  

  

为了更好的理解代码底层到底发生了什么,我们打开源码看一下自然()方法:
  

     /* *返回一个给定元素的新只读列表。返回的列表是序列化(JVM)。*/公共娱乐& lt; T>自然(可变长度元素:T): List=如果(元素。大小比;0)elements.asList emptyList其他()()      

由于RxJava和Java 8的流API包含类似的方法,所以上面的代码和RxJava以及流API很像。但是由于Android工程师不能使用流API,所以他们更多的使用的RxJava处理数据的方法来解决这个问题。然后,这种操作并不完全正确,原因在于:RxJava是一个事件处理库,而不是数据处理,所以你现在可以使用芬兰湾的科特林来解决这个问题而不必担心这些问题。
  

  


  

  

如果你对不可变对象(不可变对象)感觉到很陌生的话,我们建议你先看完这个文档看完后,在看一下这个。
  

  

芬兰湾的科特林区分可变对象(可变对象)和不可变对象(列表、集合、映射等等)的方法和其他编程语言不一样。在使用芬兰湾的科特林集合时准确区分这几种两种对象对于避免不必要的错误和错误都非常有用。
  

  

芬兰湾的科特林允许像Java类似的写法创建芬兰湾的科特林的集合实例。
  

        val列表=ArrayList ()      

这是最简单和整洁的方法。下面这种方法是最棒的写法:
  

        val列表:kotlin.collections.List=java.util.ArrayList ()      

我创建了一个kotlin.collections。列表引用,同时我们也创建了一个不可变的集合。如果你不是很相信的话,那么我们可以看一下源码:
  

        E>公共接口List<;:Collection{//查询操作   覆盖val大小:Int   覆盖有趣isEmpty():布尔   覆盖有趣包含(元素:@UnsafeVariance E):布尔   覆盖有趣iterator (): Iterator//批量操作   覆盖有趣containsAll(元素:Collection<@UnsafeVariance E>):布尔//位置访问操作/* *   *返回元素在指定的索引列表中。   */公共操作员有趣(指数:Int): E//搜索操作/* *   *返回第一次出现的指定元素的索引列表中,或1如果指定的   *元素没有包含在列表中。   */公共娱乐indexOf(元素:@UnsafeVariance E): Int/* *   *返回最后出现的指定元素的索引列表中,或1如果指定的   *元素没有包含在列表中。   */公共娱乐lastIndexOf(元素:@UnsafeVariance E): Int//列表迭代器/* *   *返回一个列表迭代器在这个列表的元素(在适当的序列)。   */公共娱乐listIterator (): ListIterator/* *   *返回一个列表迭代器在这个列表的元素(在适当的序列),从指定的索引。   */公共娱乐listIterator(指数:Int): ListIterator

在芬兰湾的科特林开发中如何使用集合详解