Kotlin系列之迭代集合与map

今天来学习一下Kotlin中如何迭代集合和map。

还是以往的惯例,先说说Java中的方式,在对比看看Kotlin中的方式。

Java中迭代集合和map

这个属于Java中的基础知识,这里贴一下代码,方便后面与Kotlin对比。
Java代码

List<String> list = new ArrayList<>();
Set<String> set = new HashSet<>();
Map<String, String> map = new HashMap<>();
for (int i = 0; i < 10; i++){
    list.add("i = " + i);
    set.add("i = " + i);
    map.put("key = " + i, "value = " + i);
}

for (String str : list){
    System.out.println(str);
}

for (String str : set){
    System.out.println(str);
}

for (Map.Entry<String, String> entry : map.entrySet()){
    System.out.println(entry.getKey() + "  " + entry.getValue());
}
Kotlin中迭代集合和map

Kotlin中迭代集合是使用上一篇中说到的for..in来来做的,与Java中的相似,但是map的迭代将采用一种不同的方式。

Kotlin迭代集合

val list = ArrayList<String>()
val set = HashSet<String>()
for (i in 1..10){
    list.add("value = " + i)
    set.add("value = " + i)
    map.put("key = " + i, "value = " + i)
}

//只迭代元素
for (value in list){
    println(value)
}

for (value in set){
    println(value)
}

上面的代码与Java中的很相似,得益于类型推导,我们可以不用写明迭代元素value的类型。
有时候我们可能需要在输出元素的同时输出对应的下标,在Kotlin中我们不需要专门声明一个变量,递增输出,可以使用下面的方式做到。

Kotlin迭代集合及下标

for ((index, value) in list.withIndex()){
    println("index = $index  value = $value")
}

上面的代码包含了几个知识点,需要注意一下。
1. 这里的list.withIndex()想当于返回两个值,我们声明了indexvalue来分别接收它。
2. 这里我们直接在双引号里面使用了$变量名的方式,这是Kotlin里面的字符串模版功能,可以让我们不用使用+连接字符串,直接用$变量名,在输出时会自动替换为对应的变量值。

下面我们再说说如何迭代输出map,其实要是理解了上面的代码,下面的代码就可以一眼看懂,放上代码。

val map = HashMap<String, String>()
for (i in 1..10){
    map.put("key = " + i, "value = " + i)
}

for ((key, value) in map){
    println("key = $key  value = $value")
}

是不是很好懂,这里Kotlin直接将key和value映射到我们声明的两个变量上了,这里我们仍然使用了字符串模版的方式来输出。

写在最后

我们发现,Kotlin中的迭代用更少更简洁的代码实现了与Java中同样的功能,Kotlin是不是有有点吸引你了呢?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值