2016-08-15 7 views
1

Ich bin neu in scala und ich habe eine listbuffer in einer Karte mit dieser Struktur:ein Element hinzufügen (aktualisieren Karte)

class Person(var name: String, var age: Int,note: ListBuffer[Note]) 
class Note(
    email: String, 
    note: Int) 

var m = Map[Tuple3[Int,Int,Int],Person]() 

Wie kann ich die Karte aktualisieren a hinzufügen neues Element in einen Listpuffer.

+0

Sie können versuchen, es –

+0

bereits versucht zu tun, aber keine Chance. Was ich will, ist nur eine Anleitung !! mit dem, was ich zu zeigen habe cuz ich bin sehr verwirrt –

+1

So zeigen Sie uns, was Sie versucht haben –

Antwort

2

Sie sollten stark case Klassen in Scala in Betracht ziehen - sie geben Ihnen eine Menge guter Sachen kostenlos. Angenommen, Sie haben Ihre Klassen Fallklassen ändern wird folgendes erreichen, was Sie wollen:

import scala.collection.mutable.ListBuffer 

case class Note(email: String, note: Int) 
case class Person(var name: String, var age: Int,note: ListBuffer[Note]) 


val n1 = Note("[email protected]", 4) 

val c1 = Person("John", 20, ListBuffer(n1)) 

val m = scala.collection.mutable.Map[(Int,Int,Int), Person]() 

m += ((1,1,1) -> c1) 

val n2 = Note("[email protected]", 40) 

m += ((1,1,1) -> c1.copy(note = c1.note += n2)) 

println(m) 

res1: scala.collection.mutable.Map[(Int, Int, Int),Person] = Map((1,1,1) -> Person(John,20,ListBuffer(Note([email protected],4), Note([email protected],40)))) 
+0

es funktioniert jetzt !! ich danke dir sehr –

1

Erstellen Sie einen ListBuffer separat mit so vielen Notizen, wie Sie möchten. Dann einfach die Karte erstellen, wie unten:

val lb = scala.collection.mutable.ListBuffer(new Note("[email protected]",1), new Note("[email protected]",2)) 
Map((1,2,3) -> new Person("samar",0,lb)) 
Verwandte Themen