2015-07-06 7 views
6

Entfernen habe ich eine MutableList und ich möchte ein Element aus, es zu entfernen, aber ich kann die entsprechende Methode nicht finden. Es gibt ein Verfahren Element entfernen ListBuffer wie folgt aus:ein Element aus MutableList in Scala

val x = ListBuffer(1, 2, 3, 4, 5, 6, 7, 8, 9) 
x -= 5 

Ich bin nicht in der Lage, eine entsprechende Methode auf MutableList zu finden.

+0

mögliches Duplikat von [Elemente aus veränderbaren Listen entfernen] (http://stackoverflow.com/questions/11575050/removing-elements-from-mutable-lists) –

+0

Die Frage, die Sie refferd war, hat die Antworten für ArrayBuffer ich habe die gleiche Lösung für ListBuffer gesucht und gefunden, aber diese Lösung doesnot Arbeit mit MutableList, die ich –

+0

die akzeptierte Antwort bin mit eindeutig ein mutable.DoubleLinkedList –

Antwort

8

MutableList fehlt -= und --=, weil es die Shrinkable Eigenschaft nicht erweitert. Verschiedene Motivationen dafür finden Sie unter here.

MutableList tut diff haben, filter und andere Methoden, die Sie für den Fall, kann Ihnen helfen, in einer Situation, wo eine Variable neu zuweisen (oder eine neue Variable Instanziierung) könnte eine Option sein, und Leistungsprobleme sind nicht im Vordergrund:

var mylist = MutableList(1, 2, 3) 
mylist = mylist diff Seq(1) 
val myNewList = mylist.filter(_ != 2) 
val indexFiltered = mylist.zipWithIndex.collect { case (el, ind) if ind != 1 => el } 

Sie können oft verwenden ListBuffer statt MutableList, die die gewünschten -= und --= Methoden frei schaltet:

val mylist = ListBuffer(1, 2, 3) 
mylist -= 1 //mylist is now ListBuffer(2, 3) 
mylist --= Seq(2, 3) //mylist is now empty 
+0

danke, ich denke, ich sollte für ListBuffer gehen –

1

Es ist nicht die Antwort, nur Sie Probleme zu warnen (zumindest in 2.11.x):

//street magic 
scala> val a = mutable.MutableList(1,2,3) 
a: scala.collection.mutable.MutableList[Int] = MutableList(1, 2, 3) 
scala> a += 4 
res7: a.type = MutableList(1, 2, 3, 4) 
scala> a 
res8: scala.collection.mutable.MutableList[Int] = MutableList(1, 2, 3, 4) 
scala> a ++= List(8,9,10) 
res9: a.type = MutableList(1, 2, 3, 4, 8, 9, 10) 
scala> val b = a.tail 
b: scala.collection.mutable.MutableList[Int] = MutableList(2, 3, 4, 8, 9, 10) 
scala> b.length 
res10: Int = 6 
scala> a.length 
res11: Int = 7 
scala> a ++= List(8,9,10) 
res12: a.type = MutableList(1, 2, 3, 4, 8, 9, 10, 8, 9, 10) 
scala> b += 7 
res13: b.type = MutableList(2, 3, 4, 8, 9, 10, 7) 
scala> a 
res14: scala.collection.mutable.MutableList[Int] = MutableList(1, 2, 3, 4, 8, 9, 10, 7) 
scala> b 
res15: scala.collection.mutable.MutableList[Int] = MutableList(2, 3, 4, 8, 9, 10, 7) 
scala> a ++= List(8,9,10) 
res16: a.type = MutableList(1, 2, 3, 4, 8, 9, 10, 7) 

Dieses Beispiel von einem Kern genommen wird - ich habe es mit #devid_blein #street_magic Tags auf Facebook gepostet , kann aber keinen originalen Link im Internet finden.