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

JAVA如何实现仅保存最新10个值的列表,适配循环输出场景

固定容量保存最新10个元素的Java实现方案

核心逻辑

每次新增元素后,若集合长度超过设定的最大值(此处为10),自动删除最早加入的元素即可,无需引入第三方依赖,JDK 自带集合类即可实现。


实现方式1:基于ArrayDeque实现(性能最优,推荐)

ArrayDeque 是 JDK 原生双端队列实现,尾部新增元素、头部删除元素的时间复杂度均为 O(1),完全适配需求:

import java.util.ArrayDeque;
import java.util.Deque;

public class FixedSizeContainer {
    public static void main(String[] args) {
        final int MAX_SIZE = 10;
        Deque<Integer> latestNumbers = new ArrayDeque<>(MAX_SIZE);

        // 模拟输出100个数字的循环
        for (int i = 1; i <= 100; i++) {
            // 新元素添加到队列尾部
            latestNumbers.offerLast(i);
            // 超过最大容量时删除队列头部的最早元素
            if (latestNumbers.size() > MAX_SIZE) {
                latestNumbers.pollFirst();
            }
        }

        // 输出结果为最后10个数字:[91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
        System.out.println(latestNumbers);
    }
}

需要转成普通List使用时,直接调用new ArrayList<>(latestNumbers)即可。


实现方式2:自定义List实现(符合List接口使用习惯)

如果希望用普通List的语法操作,可以继承ArrayList重写add方法,自动处理容量逻辑:

import java.util.ArrayList;

public class LatestNList<E> extends ArrayList<E> {
    private final int maxSize;

    public LatestNList(int maxSize) {
        super(maxSize);
        this.maxSize = maxSize;
    }

    @Override
    public boolean add(E e) {
        boolean result = super.add(e);
        // 超过容量时删除第0位的最早元素
        if (size() > maxSize) {
            remove(0);
        }
        return result;
    }
}

使用示例:

public class Test {
    public static void main(String[] args) {
        LatestNList<Integer> latestNumbers = new LatestNList<>(10);
        for (int i = 1; i <= 100; i++) {
            latestNumbers.add(i);
        }
        // 输出结果为最后10个数字:[91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
        System.out.println(latestNumbers);
    }
}

注意事项

  • 多线程场景下使用时,需要在新增元素的逻辑上加同步锁,或者替换为线程安全的集合类。
  • 两种实现默认按「最早插入→最新插入」的顺序排列元素,需要倒序(最新元素放在最前)时,输出前调用Collections.reverse()反转即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 08:12:02