我想在java中创建一个固定大小的列表,根据我在互联网上的搜索和阅读,我在java中找不到这个功能,但是我想创建一个包含100个元素的固定大小的列表,当我想添加一个新项目应该删除第 100 个元素,然后像这样调整索引(第 99 个元素现在变成第 100 个元素(仅索引)),然后我的新元素应该添加到第一个索引。
如何在java中做这样的事情?
您可以使用循环缓冲区的自定义实现。循环缓冲区(也称为环形缓冲区)是一种使用单个固定大小缓冲区的数据结构,就好像它是端到端连接的一样。
import java.util.Arrays;
public class FixedSizeList {
private final int maxSize;
private final Object[] buffer;
private int head;
public FixedSizeList(int maxSize) {
this.maxSize = maxSize;
this.buffer = new Object[maxSize];
this.head = 0;
}
public void add(Object item) {
head = (head - 1 + maxSize) % maxSize;
buffer[head] = item;
}
public Object get(int index) {
if (index < 0 || index >= maxSize) {
throw new IndexOutOfBoundsException("Index out of bounds: " + index);
}
int realIndex = (head + index) % maxSize;
return buffer[realIndex];
}
public int size() {
return maxSize;
}
@Override
public String toString() {
return Arrays.toString(buffer);
}
public static void main(String[] args) {
FixedSizeList fixedList = new FixedSizeList(100);
for (int i = 0; i < 110; i++) {
fixedList.add("Item " + i);
}
for (int i = 0; i < fixedList.size(); i++) {
System.out.println("Index " + i + ": " + fixedList.get(i));
}
System.out.println("Fixed Size List: " + fixedList);
}
}