You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java基于Processing库实现列表元素添加2秒后自动删除求助

问题根源

你当前的实现只维护了全局唯一的计时状态和开始时间,无法跟踪每个独立元素的存活时长:

  • 每次按下空格都会覆盖全局的startTime,旧元素的计时信息直接丢失
  • 触发删除逻辑时只能固定删除列表第一个元素,无法匹配到真正超时的元素
实现代码

将列表元素改为绑定自身创建时间的结构体,每次遍历检查所有元素的超时状态即可:

// 自定义类存储元素内容和对应的创建时间
class TimedItem {
  String content;
  int createTime;
  TimedItem(String content, int createTime) {
    this.content = content;
    this.createTime = createTime;
  }
}

ArrayList<TimedItem> items = new ArrayList<>();
// 统一存活时长2秒
final int ITEM_LIFE_SPAN = 2000;

void draw() {
  // 原有绘制逻辑...

  // 倒序遍历检查超时元素,避免正序删除导致的索引错位
  for (int i = items.size() - 1; i >= 0; i--) {
    TimedItem current = items.get(i);
    if (millis() - current.createTime >= ITEM_LIFE_SPAN) {
      items.remove(i);
    }
  }

  // 业务使用示例:遍历存活元素绘制
  for (int i = 0; i < items.size(); i++) {
    text(items.get(i).content, 50, 50 + i * 25);
  }
}

public void keyPressed(KeyEvent e) {
  if (e.getKeyCode() == 32) { // 空格键
    // 添加元素时直接绑定当前时间戳
    items.add(new TimedItem("new item", millis()));
  }
}
注意事项
  • 原来的全局timeStarted、startTime变量已经不需要,可以直接删除
  • 必须用倒序遍历执行删除操作,正序遍历删除会跳过部分元素的检查,导致逻辑异常
  • 如果你的元素需要额外属性(比如位置、速度等),直接加在TimedItem类里即可

内容的提问来源于stack exchange,提问作者AAAAAAbc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:15:01