Kotlin 集合

Kotlin 集合

  1. 增加了 "不可变" 集合框架的接口
  2. 没有另起炉灶, 复用Java API 的所有实现类型
  3. 提供了丰富的方法,例如 forEach/map/flatMap 等高阶函数
  4. 运算符级别的支持,简化集合框架的访问

1. Kotlin VS Java 集合

类型KotlinJava
不可变ListList List
可变ListMutableList List
不可变MapMap<K,V>Map<K,V>
可变MapMutableMap<K,V>Map<K,V>
不可变SetSet Set
可变SetMutableSet Set

1. 创建List 集合

java

 List<String> list = new ArrayList<>();
 List<Integer> list = new ArrayList(Arrays.asList(1,2,3));

kotlin

 val stringList = listOf("Hello" , "World")
 val mutableStringList = mutableListOf("Hello","World")
 var stringList = ArrayList<String>() 
// 省去new 其他和Java类似,但是这个ArrayList 是 kotlin.collections.ArrayList
//通过 typealias ArrayList<E> = java.util.ArrayList<E>

2. List集合的读写

java

  List<String> list = new ArrayList<>();
  list.add("Hello");
  list.add("Java");
  list.get(0);

kotlin

可是直接使用类似数组下标方式 [] 去读写list ,当stringList[1]表达式在左边表示 赋值 在右边表示 get取值

  val stringList = ArrayList<String>()
  stringList.add("Hello")
  stringList[1] = "World"  //等于 stirngList.add("Wrold")  在=号左边
  val hellostring = stringList.get(0)
  val worldstring = stringList[1]  //等于 stirngList.get(1) 在=号右边

3. Map集合的创建

java

  Map<String,Object> map = new HashMap<>();
  map.put("Hello","World");

kotlin

使用 to 创建 Pair 类型

    val stringmap = mapOf("Hello" to "World" , "age" to  20)
  //"Hello" to "World" 立即为 K-V即可

4.集合框架的读写

4.1 写入集合
4.1.1 list 写入

可以使用 add 或者 +=

+= 对于List来说 等价于 add

   val stringList3 = mutableListOf<String>("1","2","3")

    for(i in stringList3.indices){
        stringList3.add("num: $i")
    }
    for(i in stringList3.indices){
        stringList3 += ("num: $i")
    }

-= 对于List来说 等价于 remove

    for(i in stringList3.indices){
        stringList3 -= ("num: $i")
    }
    println(stringList3.joinToString())
4.1.2 map 写入
 stringmap["Hello"] = "World"
 stringmap.plus("Hello" to "World") 
4.2 读取集合
4.2.1 list读取
  val hellostring = stringList.get(0)
  val worldstring = stringList[1]  //等于 stirngList.get(1) 在=号右边
4.2.2 map读取

也可使用[] 方式

  val key = stringmap["Hello"]
  val getkey = stringmap.get("Hello")

5. 集合别名

有没有注意,kotlin中创建集合的 ArrayList 和 Java中的 很像,但是其实是不一样的,通过别名的方式

java

 List<String> list = new ArrayList<>();

Kotlin

 var stringList = ArrayList<String>() 
 // 省去new 其他和Java类似,但是这个ArrayList 是 kotlin.collections.ArrayList
 //通过 typealias ArrayList<E> = java.util.ArrayList<E>

Kotlin 中集合别名

@SinceKotlin("1.1") public typealias ArrayList<E> = java.util.ArrayList<E>
@SinceKotlin("1.1") public typealias LinkedHashMap<K, V> = java.util.LinkedHashMap<K, V>
@SinceKotlin("1.1") public typealias HashMap<K, V> = java.util.HashMap<K, V>
@SinceKotlin("1.1") public typealias LinkedHashSet<E> = java.util.LinkedHashSet<E>
@SinceKotlin("1.1") public typealias HashSet<E> = java.util.HashSet<E>

6. Pair & Triple

6.1 Pair (其实就是 K-V)
    val pair = "Hello" to "World" //to 方式创建
    val pair2 = Pair("Hello" , "World") //构造函数方式创建
    val value1 = pair.first  // first 取第一个,既 key
    val value2 = pair.second // second 第二个 即value
    val (x,y) = pair   //解构
6.2 Triple
    val triple = Triple("Hello" , 20 , 0.1)
    val first = triple.first
    val second = triple.second
    val third = triple.third
    val (x,y,z) = triple

欢迎大家访问 个人博客 Johnny小屋
欢迎关注个人公众号 欢迎关注个人公众号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值