import scala.collection.mutable.ArrayBuffer
// 1. 使用 case class 定义 DreamItem 类
case class DreamItem(content: String, var isDone: Boolean, deadline: String, var priority: Int)
object DreamManager {
def main(args: Array[String]): Unit = {
// 2. 定义可变 ArrayBuffer 来保存 DreamItem
val dreamList = ArrayBuffer(
DreamItem("环游世界", false, "2026-07-01", 1),
DreamItem("学会一门新外语", false, "2026-12-30", 2),
DreamItem("写一本书", false, "2026-07-10", 3)
)
println("初始梦想清单:")
printDreamList(dreamList)
// 4. 将第2个梦想设置为已完成(索引从0开始,所以索引1是第2个)
dreamList(1).isDone = true
println("\n将第2个梦想设置为已完成:")
printDreamList(dreamList)
// 5. 调高第3个梦想的优先级(索引2是第3个)
dreamList(2).priority = 1 // 将优先级提高到1
println("\n调高第3个梦想的优先级:")
printDreamList(dreamList)
// 6. 根据优先级进行从高到低排序(优先级数字越小优先级越高)
val sortedDreamList = dreamList.sortBy(_.priority)
println("\n根据优先级排序后的梦想清单:")
printDreamList(sortedDreamList)
// 7. 把优先级排名前5的梦想保存到一个新的列表中
val top5Dreams = sortedDreamList.take(5)
println("\n优先级排名前5的梦想:")
printDreamList(top5Dreams)
// 8. 循环输出梦想列表
println("\n最终梦想清单:")
println("=" * 50)
dreamList.foreach { item =>
val status = if(item.isDone) "已实现" else "未实现"
println(s"内容: ${item.content}")
println(s"状态: $status")
println(s"截止日期: ${item.deadline}")
println(s"优先级: ${item.priority}")
println("-" * 30)
}
}
// 辅助方法:打印梦想列表
def printDreamList(list: ArrayBuffer[DreamItem]): Unit = {
list.foreach { item =>
val status = if(item.isDone) "已实现" else "未实现"
println(s"${item.content} - 状态: $status - 截止日期: ${item.deadline} - 优先级: ${item.priority}")
}
}
}
-
注意事项:
- 优先级数字越小表示优先级越高(1 > 2 > 3)
- 数组索引从0开始,所以第2个梦想的索引是1
- 使用
sortBy(_.priority)进行升序排序(优先级1在最前面) - 使用
take(5)获取前5个元素
-
添加更多功能:
- 增加了打印梦想列表的辅助方法
- 添加了每一步操作后的输出,便于观察变化
- 添加了更清晰的格式化输出