scala的多種集合的使用(4)之列表List(ListBuffer)的操作


1.List列表的創建和添加元素

1)最常見的創建list的方式之一。

scala> val list = 1 :: 2 :: 3 :: Nil
list: List[Int] = List(1, 2, 3)

2)最常見的創建list的方式之一。 

scala> val list = List(1,2,3)
list: List[Int] = List(1, 2, 3)

3)集合混合類型組成。

scala> val list = List(1,2.0,33D,4000L)
list: List[Double] = List(1.0, 2.0, 33.0, 4000.0)

4)集合混合類型組成,可以有自己控制。下面的例子的集合保持了原有集合的類型。

scala> val list = List[Number](1,2.0,33D,4000L)
list: List[Number] = List(1, 2.0, 33.0, 4000)

5)range創建和填充集合。

scala> val list = List.range(1,10)
list: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)

6)fill創建和填充集合。

scala> val list = List.fill(3)("hello")
list: List[String] = List(hello, hello, hello)

7)tabulate創建和填充集合。

scala> val list = List.tabulate(5)(i => i * i)
list: List[Int] = List(0, 1, 4, 9, 16)

8)將集合轉化為List的形式。

scala> val list = collection.mutable.ListBuffer(1,2,3).toList
list: List[Int] = List(1, 2, 3)

9)將集合轉化為List的形式。

scala> "hello".toList
res41: List[Char] = List(h, e, l, l, o)

10)創建可變的list,方法是使用ListBuffer,再將ListBuffer轉化為List。

scala> import scala.collection.mutable.ListBuffer
import scala.collection.mutable.ListBuffer

scala> var fruits = new ListBuffer[String]()
fruits: scala.collection.mutable.ListBuffer[String] = ListBuffer()

scala> fruits += "apple"
res42: scala.collection.mutable.ListBuffer[String] = ListBuffer(apple)

scala> fruits += "orange"
res43: scala.collection.mutable.ListBuffer[String] = ListBuffer(apple, orange)

scala> fruits += ("banana","grape","pear")
res44: scala.collection.mutable.ListBuffer[String] = ListBuffer(apple, orange, banana, grape, pear)
	
scala> val fruitsList = fruits.toList
fruitsList: List[String] = List(apple, orange, banana, grape, pear)

11) 使用::方法在列表前添加元素。

scala> var list = List(2)
list: List[Int] = List(2)

scala> list = 1 :: list
list: List[Int] = List(1, 2)

scala> list = 9 :: list
list: List[Int] = List(9, 1, 2)

2.從List(ListBuffer)中刪除元素

1)List是不可變的,不能從中刪除元素,但是可以過濾掉不想要的元素,然后將結果賦給一個新的變量。

scala> val list = List(4,5,2,1,3)
list: List[Int] = List(4, 5, 2, 1, 3)

scala> val newList = list.filter(_ > 2)
newList: List[Int] = List(4, 5, 3)

2)像這樣反復的操作結果賦給變量的方式是可以避免的,通過聲明變量var,然后將每次操作的結果返回給該變量。

scala> var list = List(5,2,3,4,1)
list: List[Int] = List(5, 2, 3, 4, 1)

scala> list = list.filter(_ > 2)
list: List[Int] = List(5, 3, 4)

3)如果列表經常變動,使用ListBuffer是一個不錯的選擇。ListBuffer是可變的,因此可以使用可變序列的所有方法從中刪除元素。

import scala.collection.mutable.ListBuffer

scala> val x = ListBuffer(1,2,3,4,5,6,7,8,9)
x: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3, 4, 5, 6, 7, 8, 9)

//可以按值每次刪除一個元素:
scala> x -= 5
res45: x.type = ListBuffer(1, 2, 3, 4, 6, 7, 8, 9)

//可以一次刪除兩個或者更多的元素:
scala> x -= (2,3,4)
res46: x.type = ListBuffer(1, 6, 7, 8, 9)

//可以按位置刪除元素:
scala> x.remove(0)
res47: Int = 1
scala> x
res48: scala.collection.mutable.ListBuffer[Int] = ListBuffer(6, 7, 8, 9)

//remove可以從定始位置刪除指定數量的元素:
scala> x.remove(1,3)
scala> x
res50: scala.collection.mutable.ListBuffer[Int] = ListBuffer(6)

//可以用--=的方法從指定的集合中刪除元素。	
scala> val x = ListBuffer(1,2,3,4,5,6,7,8,9)
x: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3, 4, 5, 6, 7, 8,9)
scala> x --= Seq(1,2,3)
res51: x.type = ListBuffer(4, 5, 6, 7, 8, 9)

3.列表的合並或者連接

1)使用++方法合並兩個列表

scala> val a = List(1,2,3)
a: List[Int] = List(1, 2, 3)

scala> val b = List(4,5,6)
b: List[Int] = List(4, 5, 6)

scala> val c = a ++ b
c: List[Int] = List(1, 2, 3, 4, 5, 6)

2)使用:::合並兩個列表

scala> val a = List(1,2,3)
a: List[Int] = List(1, 2, 3)

scala> val b = List(4,5,6)
b: List[Int] = List(4, 5, 6)

scala> val c = a ::: b

3)使用concat合並兩個列表

scala> val a = List(1,2,3)
a: List[Int] = List(1, 2, 3)

scala> val b = List(4,5,6)
b: List[Int] = List(4, 5, 6)
	
scala> val c = List.concat(a,b)
c: List[Int] = List(1, 2, 3, 4, 5, 6)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM