Java数组大小固定

Java数组大小固定,java,arrays,arraylist,Java,Arrays,Arraylist,在Java中,我想创建一个固定大小的数组,这样我就可以添加新元素,而第一个元素就会退出 例如: 大小为5的数组:{1,2,3,4,5},然后我添加“6”,“1”退出,因此我有{2,3,4,5,6}/code>,我添加了“7”,而“2”退出:{3,4,5,6,7} 所以我想添加一个新元素并删除第一个元素。有没有一个简单的方法来实现它,或者我必须自己实现它 我是否可以使用ArrayList执行此操作,并仅删除第一个对象? 如果删除数组列表的第一个对象,第二个对象会自动成为第一个对象吗 谢谢假设您不一

Java
中,我想创建一个固定大小的
数组
,这样我就可以添加新元素,而第一个元素就会退出

例如:

大小为
5
数组
{1,2,3,4,5}
,然后我添加“
6
”,“
1
”退出,因此我有
{2,3,4,5,6}/code>,我添加了“
7
”,而“
2
”退出:
{3,4,5,6,7}

所以我想添加一个新元素并删除第一个元素。有没有一个简单的方法来实现它,或者我必须自己实现它

我是否可以使用
ArrayList
执行此操作,并仅删除第一个
对象
? 如果删除
数组列表的第一个
对象
,第二个对象会自动成为第一个对象吗


谢谢

假设您不一定需要
列表
,您可以使用fromGoogle Guava,这是一个非阻塞队列,当尝试向队列中添加新元素时,会自动从队列的头逐出元素,并且队列已满

// Create an EvictingQueue with a max size of 5
Collection<Integer> collection = EvictingQueue.create(5);
// Add 5 elements to the queue
collection.addAll(Arrays.asList(1, 2, 3, 4, 5));
System.out.println(collection);
// Add one more element
collection.add(6);
System.out.println(collection);

只需将第i个元素设置为第i+1个元素,并在末尾添加所需的内容:

static int[]g(int-arr[],int-n){

对于(int i=0;i您可能需要执行以下操作:

public class Num {

    int[] array = {1,2,3,4,5};

    public void add(int number){
        int[] temp = array;
        array = new int[array.length];

        for(int i=1;i<temp.length;i++){
            array[i-1] = temp[i];
        }

        array[array.length-1] = number;

        for(int i=0;i<array.length;i++){
            System.out.print(array[i]+" ");
        }
        System.out.println();

    }

    public static void main(String[] args) {
        Num num = new Num();
        num.add(6);
        num.add(7);
        num.add(8);
    }
}
公共类Num{
int[]数组={1,2,3,4,5};
公共无效添加(整数){
int[]temp=数组;
array=newint[array.length];

对于(int i=1;它的关键字是“循环数组”,我相信您可以找到一个Java实现。不确定数组问题,但对于arraylist是,如果您删除数组列表中第0个索引处的元素,第一个索引处的元素将变为第0个索引。“或者我必须自己实现它”当然可以。数组中没有“添加”,只有“替换”。您可以将某个索引上的项目替换为另一个。而不是询问“我可以使用
ArrayList执行此操作吗?”你自己试试看。在这里问这样的问题是非常愚蠢的。当心那些投反对票的家伙,至少解释一下你为什么投反对票。这是非常粗鲁的行为。我不认为这个问题有那么糟糕。我当然不会仅仅通过一次谷歌搜索就想出
驱逐队列
作为答案。我不会全力以赴创建
逐出队列
时返回集合的方法。相反,我至少会使用
队列
尊敬。@MaartenBodewes我想更多地展示它是如何工作的,事实上它是一个
队列
在这种情况下并不重要,但我同意你的观点,现在取决于操作。@MaartenBodewes是的,我知道,我已经做过了我花在这个网站上的时间越多,我对下载的理解就越少。请尝试遵守Java编码规则。这些示例应该很容易阅读。解释一下你在使用内联注释时做了什么,并命名你的变量。当我看到这一点时,我想到的第一件事是g(ee),这是什么?没有什么要解释的,你想要的是解释
for循环在java中的作用。但是如果它有帮助的话……例如
0th
元素(
arr[0]
)并将其设置为等于
ith+1
元素(
arr[0+1]=arr[1]
),那么
arr
看起来就像
[2,2,3,4,5]
。在
i
提供
[2,3,4,5,5]
的同时继续执行上述过程。现在只需“在末尾添加所需的内容”或在
arr[arr.length-1]
处获取元素,并将其设置为“所需的内容”(在我的示例中,我有
6
)因此
arr[arr.length-1]=6
arr[4]=6
public class Num {

    int[] array = {1,2,3,4,5};

    public void add(int number){
        int[] temp = array;
        array = new int[array.length];

        for(int i=1;i<temp.length;i++){
            array[i-1] = temp[i];
        }

        array[array.length-1] = number;

        for(int i=0;i<array.length;i++){
            System.out.print(array[i]+" ");
        }
        System.out.println();

    }

    public static void main(String[] args) {
        Num num = new Num();
        num.add(6);
        num.add(7);
        num.add(8);
    }
}