1. 程式人生 > >Kotlin系列之迭代集合與map

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是不是有有點吸引你了呢?