2016-08-15 8 views
1

をlistbufferの要素を追加します。は、私はスカラ座に新たなんだと私はこのような構造を持つマップでlistbufferを持っている(マップを更新)マップに

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]() 

はどうやって追加するにはマップを更新することができます新しい要素をリストバッファに追加します。

+0

あなたはそれを試みることができます –

+0

すでに試してみましたが、チャンスはありません。私が欲しいのは単なるガイドです!私は非常に混乱しているので、私はスタッズcuzを持っています –

+1

私は何を試してみました –

答えて

2

あなたが強くScalaでcaseクラスを使用することを検討すべきである - 彼らは自由のためのあなたに良いものをたくさん与えます。あなたのクラスをケースクラスに変更すると、次のようにしてあなたが望むものが達成されます:

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

それは今働いている!どうもありがとうございます –

1

ListBufferは、必要な数だけ別々に作成します。そして、単に以下のようにマップを作成します。

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)) 
関連する問題