梦想

26 阅读2分钟
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. 注意事项

    • 优先级数字越小表示优先级越高(1 > 2 > 3)
    • 数组索引从0开始,所以第2个梦想的索引是1
    • 使用 sortBy(_.priority) 进行升序排序(优先级1在最前面)
    • 使用 take(5) 获取前5个元素
  2. 添加更多功能

    • 增加了打印梦想列表的辅助方法
    • 添加了每一步操作后的输出,便于观察变化
    • 添加了更清晰的格式化输出