それぞれが一連のタスクを含むジョブで構成されたデータ構造があります。Job と Task の両方のデータは、次のようなファイルで定義されます。
jobs.txt:
JA
JB
JC
tasks.txt:
JB T2
JA T1
JC T1
JA T3
JA T2
JB T1
オブジェクトを作成するプロセスは次のとおりです。
- 各ジョブを読み取り、ID で作成して保存し
ます - タスクを読み取り、ID でジョブを取得し、タスクを作成し、タスクをジョブに保存します
ファイルが読み込まれると、このデータ構造は決して変更されません。したがって、ジョブ内のタスクが不変セットに格納されることを望みます。しかし、効率的な方法でそれを行う方法がわかりません。(注: ジョブを格納する不変のマップは、不変のままにすることができます)
コードの簡略版は次のとおりです。
class Task(val id: String)
class Job(val id: String) {
val tasks = collection.mutable.Set[Task]() // This sholud be immutable
}
val jobs = collection.mutable.Map[String, Job]() // This is ok to be mutable
// read jobs
for (line <- io.Source.fromFile("jobs.txt").getLines) {
val job = new Job(line.trim)
jobs += (job.id -> job)
}
// read tasks
for (line <- io.Source.fromFile("tasks.txt").getLines) {
val tokens = line.split("\t")
val job = jobs(tokens(0).trim)
val task = new Task(job.id + "." + tokens(1).trim)
job.tasks += task
}
いつもご提案ありがとうございます。