我需要向ArrayList个队列添加元素,但当我调用函数添加元素时,我希望它将元素添加到数组的开头(因此它的索引最低),如果数组有10个元素,则添加新元素会导致删除最旧的元素(索引最高的元素).

有人有什么建议吗?

推荐答案

List有方法add(int, E),所以你可以使用:

list.add(0, yourObject);

之后,您可以使用以下命令删除最后一个元素:

if(list.size() > 10)
    list.remove(list.size() - 1);

但是,您可能希望重新考虑您的需求或使用不同的数据 struct ,如Queue

EDIT

或许可以看看apache 的CircularFifoQueue条:

CircularFifoQueue是具有固定大小的先进先出队列,如果已满则替换其最旧的元素.

只需使用最大大小初始化它:

CircularFifoQueue queue = new CircularFifoQueue(10);

Java相关问答推荐

无法在Java中使用Curve secp 256 k1验证JWT

通过推送通知向自己发送Matrix消息

转换为Biggram

强制Mockito返回null而不是emtpy list

同时运行JUnit测试和Selenium/Cucumber测试时出现问题

Java Stream,需要更新列表对象列表

RxJava PublishSubject缓冲区元素超时

Java中的死锁及其重入锁和锁

测试何时使用Mockito强制转换对象会导致ClassCastException

声明带有泛型的函数以用作查找映射中的值

解析方法";javax/imageio/metadata/IIOMetadata.getAsTree(Ljava/lang/String;)Lorg/w3c/dom/Node时加载约束冲突

垃圾收集时间长,会丢弃网络连接,但不会在Kubernetes中反弹Pod

有谁能帮我修一下这个吗?使输出变得更加整洁

找出承载Cargo 的最小成本

S数学.exp的相同错误保证也适用于StrictMath.exp吗?

当我在Java中有一个Synchronized块来递增int时,必须声明一个变量Volatile吗?

当我将JTextField的getText函数与相等的String进行比较时;t返回true

获取401未经授权,即使在标头中设置了浏览器名称和cookie

将@Transactional添加到Spring框架中链下的每个方法会产生什么效果?

JavaFX中ListView中的问题