Liste dans Scala

Les listes Scala sont similaires aux tableaux, tous leurs éléments ont le même type,

Mais ils sont également différents: la liste est immuable, une fois la valeur définie, elle ne peut plus être modifiée.

                                    Deuxièmement, la liste a une structure récursive (c'est-à-dire la structure de la liste liée) alors que le tableau ne l'est pas.

 

 

La liste dans scala est une liste immuable. Parfois, il n'est pas pratique pour nous d'ajouter directement des objets. À ce stade, nous pouvons la convertir en liste java et l'ajouter, puis revenir en arrière.

 

LIst prend en charge l'ajout et la suppression rapides d'éléments dans l'en-tête, mais ne fournit pas la fonction d'accès rapide par pression vers le bas, qui nécessite un parcours linéaire des colonnes.

L'ajout et le retrait rapides de l'en-tête permettent une correspondance fluide des motifs

 

Si nous voulons stocker un objet dans une liste, parce que la liste n'est pas comme une liste java, nous pouvons l'ajouter directement.A ce moment, nous devons utiliser LIstBuffer. 

LIstBuffer est une variable.

La liste fournit un accès rapide à la tête, mais un accès moins efficace à la queue. Liste pour ajouter des éléments, considérez généralement l'inverse, ajoutez des éléments, puis appelez reverset

Une autre alternative, en utilisant ListBuffer, fournit des opérations d'ajout et d'ajout à temps constant, et enfin appelle toList pour obtenir List.

 

Le code spécifique est le suivant:

    val list = ListBuffer [ItemView] (). asJava
    list.add ()
 
    // Une fois l'ajout terminé, si vous souhaitez revenir à la liste scala, tout
 
    commeScala directement list.asScala
 

 

1. Définition:

Deux méthodes 1. Construction List ()    

2. Utilisation :: Construction nulle

 

par exemple:

var list1 = List(1,2,3)

list1.foreach(x => println(x))

println(list1(0),list1(2))

println("------change ele-----------")

//list1(0) = 9999 //error : value update is not a member of List[Int]

println(list1(0))

 

Sortir:

 

PS: Si vous stockez différents types de données dans la liste, le type de liste deviendra Any

2. Liste des épissures

Deux méthodes ::: et List.concat ()

 

par exemple:

var list1 = List(1)
var list2 =List(2)

//method 1
var list3 = list1:::list2

//method 2
var list4 = List.concat(list1, list2)
list3.foreach(x => println(x))
list4.foreach(x => println("list4: "+x))

Sortir:

 

 

3. Énumérer les méthodes courantes

 

Opérations courantes de ListBuffer

 

 

map [B] (f: (A) => B): Liste [B]

Recalculer tous les éléments par la méthode donnée

par exemple:

val lb = new ListBuffer[String]
lb.append("张三","李四","王五","赵四"," ","张三")
var list2 = lb.map(x => x.trim+"2333")

list2.foreach(x => println(x))

Sortir:

 

 

max: A

Trouvez le plus grand élément

 

min: A

Trouvez le plus petit élément

par exemple:

var lb = new ListBuffer[Int]
lb.append(1,2,3,4,5)
var x = lb.max
println(x)

println("----------------")
var n = lb.min
println(n)

 

inverse: Liste [A]

Liste inversée

 

trié

 

def trié [B>: A]: Liste [A]

Tri de liste

 

Version détaillée: https://blog.csdn.net/hzp666/article/details/115086159

 

 

3.1 Augmentation:

ajouter()

var lb = new ListBuffer[Int]
    lb.append(1)
    lb.append(2,3,4)

  lb.foreach(x => println(x))

输出:
1
2
3
4

3.2删

drop (n: Int): Liste [A]

Supprimer les n premiers éléments et renvoyer une nouvelle liste

par exemple:

var lb = new ListBuffer[Int]
lb.append(1,2,3,4)
var listTem = new ListBuffer[Int]
listTem = lb.drop(2)  //d
listTem.foreach(x => println(x))

Sortir:

 

dropRight (n: Int): Liste [A]

Supprimer les n derniers éléments et renvoyer une nouvelle liste

eg:
var lb = new ListBuffer[Int]
lb.append(1,2,3,4)
var listTem = new ListBuffer[Int]
listTem = lb.dropRight(2)
listTem.foreach(x => println(x))

Sortir:

 

dropWhile (p: (A) => Booléen): Liste [A]

Jeter les éléments de gauche à droite jusqu'à ce que la condition p ne soit pas satisfaite

var lb = new ListBuffer[Int]
lb.append(1,2,3,4,5)

var lbTemp = new ListBuffer[Int]
var len = lb.length
lbTemp = lb.dropWhile(len => len<3 )
lbTemp.foreach(x => println(x))

Sortir:

 

existe (p: (A) => Booléen): Booléen

Déterminez si l'élément de la condition spécifiée dans la liste existe.

Déterminez s'il y a un élément dans l:

 

par exemple:

val listString = new ListBuffer[String]
listString.append("张三","李四","麻子","赵四"," ")
var flag:Boolean = listString.exists(x => x.equals("zhangsan"))
val flag2 = listString.exists(x => x.equals("赵四"))

println("flag :"+flag)
println("flag2 :"+flag2)

 

Sortir:

 

forall (p: (A) => Boolean): Booléen

Vérifiez tous les éléments.

Par exemple: pour déterminer si tous les éléments commencent par "H":

scala> l.forall (s => s.startsWith ("H")) res10: Boolean = false

 

3,3

3.4 Requête

Selon la requête en indice:

var lb = new ListBuffer[Int]
lb.append(1)
lb.append(2,3,4)
println(lb.apply(1))

Sortir:

2

 

indexOf (elem: A, from: Int): Int

Recherchez la première occurrence de l'élément à partir de la position spécifiée à partir de

Impossible de trouver le retour -1

par exemple:

val lb = new ListBuffer[String]
lb.append("张三","李四","王五","赵四"," ")

var index1 = lb.indexOf("张三")
println(index1)
println("------------------")
var index2 = lb.indexOf("张三1")
println(index2)

Sortir:

 

lastIndexOf (elem: A, end: Int): Int

Commencez à rechercher la dernière position de l'élément à l'extrémité de position spécifiée

eg:

  val lb = new ListBuffer[String]
  lb.append("张三","李四","王五","赵四"," ","张三")
var index = lb.lastIndexOf("张三")
println(index)

Sortir:

 

longueur: Int

Longueur de la liste de retour

 

 

Numéro de série Méthode et description
1

def + :( elem: A): Liste [A]

Pré-ajouter des éléments à la liste

scala> val x = List(1)
x: List[Int] = List(1)

scala> val y = 2 +: x
y: List[Int] = List(2, 1)

scala> println(x)
List(1)
2

def: :( x: A): Liste [A]

Ajouter des éléments au début de la liste

3

def :: :( préfixe: Liste [A]): ​​Liste [A]

Ajouter l'élément de la liste spécifiée au début de la liste

4

def: + (elem: A): Liste [A]

Copiez la liste après avoir ajouté des éléments.

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

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

scala> println(a)
List(1)
5

def addString(b: StringBuilder): StringBuilder

将列表的所有元素添加到 StringBuilder

6

def addString(b: StringBuilder, sep: String): StringBuilder

将列表的所有元素添加到 StringBuilder,并指定分隔符

7

def apply(n: Int): A

通过列表索引获取元素

8

def contains(elem: Any): Boolean

检测列表中是否包含指定的元素

9

def copyToArray(xs: Array[A], start: Int, len: Int): Unit

将列表的元素复制到数组中。

10

def distinct: List[A]

去除列表的重复元素,并返回新列表

11

def drop(n: Int): List[A]

丢弃前n个元素,并返回新列表

12

def dropRight(n: Int): List[A]

丢弃最后n个元素,并返回新列表

13

def dropWhile(p: (A) => Boolean): List[A]

从左向右丢弃元素,直到条件p不成立

14

def endsWith[B](that: Seq[B]): Boolean

检测列表是否以指定序列结尾

15

def equals(that: Any): Boolean

判断是否相等

16

def exists(p: (A) => Boolean): Boolean

判断列表中指定条件的元素是否存在。

判断l是否存在某个元素:

scala> l.exists(s => s == "Hah")
res7: Boolean = true
17

def filter(p: (A) => Boolean): List[A]

输出符号指定条件的所有元素。

过滤出长度为3的元素:

scala> l.filter(s => s.length == 3)
res8: List[String] = List(Hah, WOW)
18

def forall(p: (A) => Boolean): Boolean

检测所有元素。

例如:判断所有元素是否以"H"开头:

scala> l.forall(s => s.startsWith("H")) res10: Boolean = false
19

def foreach(f: (A) => Unit): Unit

将函数应用到列表的所有元素

20

def head: A

获取列表的第一个元素

21

def indexOf(elem: A, from: Int): Int

从指定位置 from 开始查找元素第一次出现的位置

22

def init: List[A]

返回所有元素,除了最后一个

23

def intersect(that: Seq[A]): List[A]

计算多个集合的交集

24

def isEmpty: Boolean

检测列表是否为空

25

def iterator: Iterator[A]

创建一个新的迭代器来迭代元素

26

def last: A

返回最后一个元素

27

def lastIndexOf(elem: A, end: Int): Int

在指定的位置 end 开始查找元素最后出现的位置

28

def length: Int

返回列表长度

29

def map[B](f: (A) => B): List[B]

通过给定的方法将所有元素重新计算

30

def max: A

查找最大元素

31

def min: A

查找最小元素

32

def mkString: String

列表所有元素作为字符串显示

33

def mkString(sep: String): String

使用分隔符将列表所有元素作为字符串显示

34

def reverse: List[A]

列表反转

35

def sorted[B >: A]: List[A]

列表排序

 

详细版:https://blog.csdn.net/hzp666/article/details/115086159

36

def startsWith[B](that: Seq[B], offset: Int): Boolean

检测列表在指定位置是否包含指定序列

37

def sum: A

计算集合元素之和

38

def tail: List[A]

返回所有元素,除了第一个

39

def take(n: Int): List[A]

提取列表的前n个元素

40

def takeRight(n: Int): List[A]

提取列表的后n个元素

41

def toArray: Array[A]

列表转换为数组

42

def toBuffer[B >: A]: Buffer[B]

返回缓冲区,包含了列表的所有元素

43

def toMap[T, U]: Map[T, U]

List 转换为 Map

44

def toSeq: Seq[A]

List 转换为 Seq

45

def toSet[B >: A]: Set[B]

List 转换为 Set

46

def toString(): String

列表转换为字符串

Je suppose que tu aimes

Origine blog.csdn.net/hzp666/article/details/115004788
conseillé
Classement