精讲-第5章(18)区间、数组、集合之间转换

作者: 739c8d412b4c | 来源:发表于2017-12-06 17:20 被阅读224次

区间、数组、集合之间转换

在Kotlin中区间、数组、集合都是描述一系列元素的集合。通过上面的学习,我们看到它们有不同的地方,也有相似的地方。其实只要把其中一个的学习思路把握了。学习其他依葫芦画瓢的事情。

实际上,区间、数组、集合之间还可以相互转换。

Range转Array、List、Set

区间可以转数组,也可以转List和Set集合。转数组通过arrayOf方法,转List通过toList方法,转Set通过toSet方法。

arrayOf方法,可以接收区间参数,返回数组,参考签名:

public inline fun <reified @PureReifiable T> arrayOf(vararg elements: T): Array<T>

toList方法,转换为List,参考签名:

public fun <T> Iterable<T>.toList(): List<T> {
   
}

toSet方法,返回Set,参考签名:

public fun <T> Iterable<T>.toSet(): Set<T> {
   
}

我们通过一个案例来验证下,参考代码:

Array转List、Set

数组可以转List和Set集合。转List通过toList方法,转Set通过toSet方法。

toList方法,转换为List,参考签名:

public fun <T> Iterable<T>.toList(): List<T> {

   

}

toSet方法,返回Set,参考签名:

public fun <T> Iterable<T>.toSet(): Set<T> {

   

}

我们通过一个案例来验证下,参考代码:

List转Array和Set

List可以转Array和Set集合。转Array通过toIntArray和toTypedArray,转Set通过toSet方法。

toIntArray方法,转换为Int数组,方法签名:

public fun Collection<Int>.toIntArray(): IntArray 
{
 }

toTypedArray方法,根据List中包含元素的类型转换为对应的集合,如果是List<String>转换为String数组,如果是List<Int>转换为Int数组,方法签名:

这里用到了关键字reified,这个是在泛型里面会接受的知识点。

toSet方法,返回Set,参考签名:

public fun <T> Iterable<T>.toSet(): Set<T> {
   
}

我们通过一个案例来验证下,参考代码:

Set转Array和List

Set可以转Array和List集合。转Array通过toIntArray和toTypedArray,转List通过toList方法。

toIntArray方法,转换为Int数组,方法签名:

public fun Collection<Int>.toIntArray(): IntArray 
{

 }

toTypedArray方法,根据List中包含元素的类型转换为对应的集合,如果是List<String>转换为String数组,如果是List<Int>转换为Int数组,方法签名:

这里用到了关键字reified,这个是在泛型里面会接受的知识点。

toSet方法,返回Set,参考签名:

public fun <T> Iterable<T>.toSet(): Set<T> {
   
}

我们通过一个案例来验证下,参考代码:

Map转Array、List和Set

Map可以直接转List集合,那么List中所转元素的类型就是Pair。Map想要转Array、List和Set只能先获取map的keys或者values进行换行。所用的方法还是之前提到的toList、toSet、toTypedArray,所以这里就不做过多解释了,直接演示下例子:

相关文章

  • 精讲-第5章(18)区间、数组、集合之间转换

    区间、数组、集合之间转换 在Kotlin中区间、数组、集合都是描述一系列元素的集合。通过上面的学习,我们看到它们有...

  • Kotlin 学习四

    一: 区间、数组、集合① 区间(或叫作范围) ② 数组 Array ③ 集合 二: for 循环语句 三:whil...

  • Scala -> Java 类型转换

    集合转换 数组转换

  • 2018-07-24

    Android List,Set,Map集合安全 集合区别 并发集合类性能分析 数组 数组存储区间是连续的,占用内...

  • Java中数组和集合之间的转换

    Java中怎么将数组转换为集合或者将集合转换为数组??? Talk less,Show me the code! ...

  • 深入理解数组:底层实现探究

    数组的协议结构 序列 -> 集合 -> 可以做区间替换的集合 -> 数组 Sequence 序列 一个序列(Seq...

  • 合并区间【LeetCode】

    以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, ...

  • Day34 合并区间

    以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, ...

  • 集合、数组转换

    数组==>集合使用 Arrays 类提供的方法快速转换,Arrays.asList(); 集合==>数组

  • 3 合并区间

    【题目】以数组intervals表示若干个区间的集合,其中单个区间为intervals[i]=[starti, e...

网友评论

  • 2a6025377967:可以啊我曹, 我大黑马居然在简书写教程了

本文标题:精讲-第5章(18)区间、数组、集合之间转换

本文链接:https://www.haomeiwen.com/subject/hdjlixtx.html