我有一个由作业组成的数据结构,每个作业都包含一组任务。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
}
提前感谢您的每一个建议!