Kotlin---集合與遍歷
介紹
同樣在Kotlin中會有List、Map、Set,而與Java中資料結構大多相同,也略有區別。Kotlin中的集合分為可變集合與不可變集合。
List及其遍歷
Kotlin的List<E>
介面只提供了size
、get
、indexOf
等介面。所以我們在寫程式碼之前需要先知道這個List使用的時候會變還是不會變。
建立可變與不可變的List
在Kotlin中都是通過標準庫來建立集合類,例如:
- 建立可變List:通過
mutableListOf()
,返回MutableList
物件 - 建立不可變List:通過
listOf()
,返回List
介面
class TestKotlin {
fun function() {
// 建立MutableList可以繼續新增修改元素
var mutableList: MutableList<Int> = mutableListOf(1, 2)
mutableList.add(3)
mutableList.remove(4)
// 建立List不能新增和刪除只能遍歷
var immutableList: List<Int> = listOf(1, 2)
}
}
List的遍歷
在Kotlin中的遍歷和Groovy一樣,都可以使用foreach
閉包來完成,也可以使用in
關鍵字來實現
class TestKotlin {
fun function() {
var mutableList: MutableList<Int> = mutableListOf(1, 2, 3, 4)
mutableList.forEach {
println("Mutable List Elements:$it")
}
var mutableList: MutableList<Int> = mutableListOf(1, 2)
for (value in mutableList) {
print("value:$value")
}
}
}
而過濾List中的部分資料也可以通過閉包來實現,通過filter
,我們過濾了小於1的元素。而通過first
,我們會找到第一個等於3的元素。
class TestKotlin {
fun function() {
var mutableList: MutableList<Int> = mutableListOf(1, 2, 3, 4)
var filtedList: List<Int> = mutableList.filter {
it > 1
}
var first = mutableList.first {
it == 3
}
}
}
在Kotlin的閉包中,可以使用很多方式來指定引數,如果沒有指定引數的話,預設會有一個
it
引數來代表閉包的引數。也就是我們也可以使用下面的方式來指定引數的名稱。這也和Groovy一樣。
var filtedList: List<Int> = mutableList.filter { element ->
element > 1
}
而對於排序我們可以通過指定comparator
來完成
class TestKotlin {
fun function() {
var mutableList: MutableList<Int> = mutableListOf(1, 2, 3, 4)
mutableList.sortWith(comparator = Comparator { x, y ->
x - y
})
}
}
Map建立以及遍歷
Map的建立以及訪問、遍歷和List有一些區別。
對於Map的建立可以通過to
關鍵字來完成Key-Value
的配對。而遍歷可以使用forEach
的方式,也可以通過in
關鍵字來完成遍歷
class TestKotlin {
fun function() {
var mutableMap: MutableMap<Int, String> = mutableMapOf(1 to "one", 2 to "two", 3 to "three")
mutableMap.forEach {
print("key:${it.key}...value:${it.value}")
}
for ((key, value) in mutableMap) {
print("Key:$key....Value:$value")
}
}
}
而訪問Map中的Key或者Value則可以類似於Python中字典的形式訪問
class TestKotlin {
fun function() {
var mutableMap: MutableMap<Int, String> = mutableMapOf(1 to "one", 2 to "two", 3 to "three")
print(mutableMap[1])
}
}
Set建立以及遍歷
與List
建立差不多,Set的建立與遍歷、過濾如下
class TestKotlin {
fun function() {
var mutableSet: MutableSet<Int> = mutableSetOf(1, 2, 3)
var immutableSet: Set<Int> = hashSetOf(1, 2, 3)
mutableSet.forEach {
println("$it")
}
}
}
相關文章
- 集合框架-Map集合的遍歷框架
- Collection集合的遍歷
- 集合框架-集合的巢狀遍歷框架巢狀
- 集合index by 的遍歷方法Index
- Java遍歷Map集合的方法Java
- 泛型方法、初始集合和集合的遍歷泛型
- Java8集合遍歷Java
- 按指定格式遍歷集合字串字串
- Html遍歷物件、list集合、陣列HTML物件陣列
- jsp下實現遍歷集合JS
- 集合框架-集合的巢狀遍歷(HashMap巢狀HashMap)框架巢狀HashMap
- 集合框架-集合的巢狀遍歷(HashMap巢狀ArrayList)框架巢狀HashMap
- 集合框架-集合的巢狀遍歷(ArrayList巢狀HashMap)框架巢狀HashMap
- 集合框架-集合的巢狀遍歷(多層巢狀)框架巢狀
- 關於Map集合的遍歷總結
- js技巧用Map集合代替Array遍歷JS
- Java之HashMap集合簡介及遍歷JavaHashMap
- 集合框架(List儲存字串並遍歷)框架字串
- IOS各種集合遍歷效率對比iOS
- foreach 實現 MyBatis 遍歷集合與批量運算元據MyBatis
- 利用jQuery如何遍歷指定的li元素集合jQuery
- 集合遍歷 java.util.ConcurrentModificationExceptionJavaException
- java 遍歷map 方法 集合 五種的方法Java
- Python字典的遍歷,包括key遍歷/value遍歷/item遍歷/Python
- 使用謂詞(NSPredicate)來提高集合遍歷與過濾查詢的效率
- 使用jstl無法遍歷bean中的集合JSBean
- jQuery遍歷陣列和集合程式碼例項jQuery陣列
- js遍歷拼接list集合物件,JSONArray陣列物件JSON陣列
- 【JavaScript實用技巧(一)】迴圈遍歷與跳出迴圈遍歷JavaScript
- 關於集合遍歷並刪除報錯詳解
- 集合框架-HashSet儲存字串、自定義物件並遍歷框架字串物件
- JavaScript 遍歷、列舉與迭代JavaScript
- 資料結構與演算法——二叉樹的前序遍歷,中序遍歷,後序遍歷資料結構演算法二叉樹
- jsp頁面中同時遍歷多個list集合JS
- java集合遍歷的幾種方式總結及比較Java
- js的map遍歷和array遍歷JS
- python之 序列與字典遍歷Python
- 二叉樹建立,前序遍歷,中序遍歷,後序遍歷 思路二叉樹