Scala 列表類似於數組,它們所有元素的類型都相同,但是它們也有所不同:列表是不可變的,值一旦被定義了就不能改變,其次列表 具有遞歸的結構(也就是鏈接表結構)而數組不是
package test
object listDemo {
def main(args: Array[String]): Unit = {
val list: List[String] = List("a", "b" ,"a")
//爲列表預添加元素
println("A" +: list)
//在列表開頭添加元素
println("c" :: list)
//在列表開頭添加指定列表的元素
println(List("d","e") ::: list)
//複製添加元素後列表
println(list :+ "1")
//將列表的所有元素添加到 StringBuilder
val sb = new StringBuilder("f")
println(list.addString(sb))
//指定分隔符
println(list.addString(sb,","))
//通過列表索引獲取元素
println(list.apply(0))
//檢測列表中是否包含指定的元素
println(list.contains("a"))
//將列表的元素複製到數組中,在給定的數組xs中填充該列表的最多爲長度(len)元素,從start位置開始。
val a = Array('a', 'b', 'c')
val b : Array[Char] = new Array(5)
a.copyToArray(b,0,1)
b.foreach(println)
//去除列表的重複元素,並返回新列表
println(list.distinct)
//丟棄前n個元素,並返回新列表
println(list.drop(1))
//丟棄最後n個元素,並返回新列表
println(list.dropRight(1))
//從左向右丟棄元素,直到條件p不成立
println(list.dropWhile(_.equals("a")))
//檢測列表是否以指定序列結尾
println(list.endsWith(Seq("a")))
//判斷是否相等
println(list.head.equals("a"))
//判斷列表中指定條件的元素是否存在,判斷l是否存在某個元素
println(list.exists(x=> x == "a"))
//輸出符號指定條件的所有元素
println(list.filter(x=> x.equals("a")))
//檢測所有元素
println(list.forall(x=> x.startsWith("b")))
//將函數應用到列表的所有元素
list.foreach(println)
//獲取列表的第一個元素
println(list.head)
//從指定位置 from 開始查找元素第一次出現的位置
println(list.indexOf("b",0))
//返回所有元素,除了最後一個
println(list.init)
//計算多個集合的交集
println(list.intersect(Seq("a","b")))
//檢測列表是否爲空
println(list.isEmpty)
//創建一個新的迭代器來迭代元素
val it = list.iterator
while (it.hasNext){
println(it.next())
}
//返回最後一個元素
println(list.last)
//在指定的位置 end 開始查找元素最後出現的位置
println(list.lastIndexOf("b",1))
//返回列表長度
println(list.length)
//通過給定的方法將所有元素重新計算
list.map(x=> x+"jason").foreach(println)
//查找最大元素
println(list.max)
//查找最小元素
println(list.min)
//列表所有元素作爲字符串顯示
println(list.mkString)
//使用分隔符將列表所有元素作爲字符串顯示
println(list.mkString(","))
//列表反轉
println(list.reverse)
//列表排序
println(list.sorted)
//檢測列表在指定位置是否包含指定序列
println(list.startsWith(Seq("a"),1))
//計算集合元素之和,這個地方必須是int類型,如果是string直接報錯
//println(list.sum)
//返回所有元素,除了第一個
println(list.tail)
//提取列表的前n個元素
println(list.take(2))
//提取列表的後n個元素
println(list.takeRight(1))
//列表轉換爲數組
println(list.toArray)
//返回緩衝區,包含了列表的所有元素
println(list.toBuffer)
//List 轉換爲 Map
val arr = Array(("jason", 24), ("jim", 25))
arr.toMap.foreach(println)
//List 轉換爲 Seq
println(list.toSeq)
//List 轉換爲 Set
println(list.toSet)
//列表轉換爲字符串
println(list.toString())
}
}
運行結果:
List(A, a, b, a)
List(c, a, b, a)
List(d, e, a, b, a)
List(a, b, a, 1)
faba
fabaa,b,a
a
true
a
List(a, b)
List(b, a)
List(a, b)
List(b, a)
true
true
true
List(a, a)
false
a
b
a
a
1
List(a, b)
List(a, b)
false
a
b
a
a
1
3
ajason
bjason
ajason
b
a
aba
a,b,a
List(a, b, a)
List(a, a, b)
false
List(b, a)
List(a, b)
List(a)
[Ljava.lang.String;@51cdd8a
ArrayBuffer(a, b, a)
(jason,24)
(jim,25)
List(a, b, a)
Set(a, b)
List(a, b, a)
轉自https://blog.csdn.net/xianpanjia4616/article/details/84930779