Kotlin從入門到放棄(二) 字符串和容器
本篇是來記錄在Kotlin學習過程中字符串和容器的知識點,方便以後的查閱和複習。
字符串聲明
Kotlin中字符串類型的聲明和基本數據類型一樣
var str:String = "Kotlin is very good"
字符串與基本類型的轉換
字符串轉換目標 | Kotlin的轉換方式 | Java的轉換方式 |
---|---|---|
字符串轉整型 | toInt方法 | Integer.parseInt(字符串變量) |
字符串轉長整型 | toLong方法 | Long.parseLong(字符串變量) |
字符串轉浮點數 | toFloat方法 | Float.parseFloat(字符串變量) |
字符串轉雙精度數 | toDouble方法 | Double.parseDouble(字符串變量) |
字符串轉布爾型 | toBoolean方法 | Boolean.parseBoolean(字符串變量) |
字符串轉字符數型 | toCharArray方法 | 字符串變量的toCharArray方法 |
字符串的常用方法
1.字符串查找
- indexOf() : 查找某一個元素或字符串在原字符串中第一次出現的下標。
2.字符串截取
- substring
startIndex參數:截取字符串的開始下標
endIndex參數:截取字符串的結束下標
rang參數,是指一個IntRang類型
3.字符串替換
-replace
oldChar: 需要替換的字符
newChar: 新的字符
ignoreCase : 是否引用Java中的replace()函數。默認值爲false,即用Java的replace()函數
4.字符串分割
- split 用法同Java
字符串模板及其拼接
我們還Kotlin中直接加入 “$變量名”即可表示此處引用該變量的值。
"字符串的值爲$string"
有些變量需要計算的時候,需要用大括號把運算表達式抱起來,如下面所示
"字符串的長度爲${string.length}"
當我們想打出{'字符串'}”
//單個字符
\$ 或者 ${'$'}
//字符串
${'需要轉義的字符串'}
容器
與Java類似,Kotlin也有三種基本的容器,集合Set,隊列List,映射Map。每種容器分爲只讀和可變兩種類型。容器默認爲只讀類型,如果允許修改容器變量,就需要加上Mutable前綴表示可變容器。
- MutableSet :可變集合
- MutableList:可變隊列
- MutableMap:可變映射
只有可變容器才能對內部元素進行增刪查改的操作。
容器的公共方法具體說明如下: - isEmpty :判斷容器是否爲空
- isNotEmpty:判斷容器是否爲非空
- clear:清空該容器
- contains:是否包含指定元素
- iterator :獲取容器的迭代器
- count 獲取該容器的元素個數
// Kotlin 在聲明容器是就可以初始化賦值
var list : List<String> = listOf("Java","Kotlin")
Kotlin的容器 | 容器名稱 | 容器的初始化方法 |
---|---|---|
只讀集合 | Set | setOf |
可變集合 | MutableSet | mutableSetOf |
只讀隊列 | List | listOf |
可變隊列 | MutableList | mutableListOf |
只讀映射 | Map | maoOf |
可變映射 | MutableMap | mutableSetOf |
1.集合Set/MutableSet
集合是一種最簡單的容器,他有下面的特徵
1. 內部的元素不按順序排列,無法按照小標進行訪問。
2. 容器內的元素存在唯一性,通過哈希值校驗是否存在相同的元素,若存在則將其覆蓋。
1.1MutableSet的性質
- 通過Add方法添加元素,集合是無序的,不知道添加的元素的位置。
- 沒有修改元素值的方法,一旦元素被添加,則不可被修改。
- remove移除指定元素,但無法刪除某個位置的元素。
1.2集合的遍歷
- 迭代器
val iterator = set.iterator()
whlie(iterator.hasNext()){
var str = iterator.next()
print(str)
}
- for - in 循環
for( str in set){
print(str)
}
- foreach
推薦第三種,Kotlin使用的foreach遍歷,採用匿名函數的樣式,內部用it代表每個元素。
set.forEach { print(it) }
2.隊列:List/MutableList
隊列是一種元素之間按照順序排列的容器,與集合最大的區別就是多了次序管理。具有以下性質
- 隊列能夠通過get方法獲取指定位置的元素,也可以直接通過下標獲取。
- MutableList的add方法是每次吧元素添加到隊列尾部,也可以添加到指定位置。
- MutableList的set方法可以修改指定位置的元素。
- Mutable的removeAt方法允許刪除指定位置的元素
- 隊列可以通過下標循環遍歷
// indices是隊列的下標數組 0-n
for (i in list.indices){
print(list[i])
}
6.MutableList 提供了sort方法給隊列中的元素重新排列。sortBy表示按條件升序排列,sortByDescending表示按條件降序排列。
list.sortBy { it.length }
list.sortByDescending { it.length }
3.映射Map/MutableMap
映射的內部存儲的是一組鍵值對(Key - Value),第一部分是元素的鍵,第二部分是元素的內容。具有以下性質。
- containsKey判斷是否存在指定鍵名的元素,containsValue判斷是否存在指定鍵值的元素。
- put方法添加元素的時候會先判斷是否存在指定元素,存在修改,不存在新增。
- remove來移除元素
- 初始化的時候採用 “鍵名 to 鍵值”的形式,或者Pair(鍵名,鍵值的形式)
var map:MutableMap<String,String> = mutableMapOf("1" to "Kotlin")
var map:MutableMap<String,String> = mutableMapOf(Pair("1","Kotlin"))
5.映射的遍歷方法同集合。