Java数组大小已修复

时间:2016-10-15 11:11:24

标签: java arrays arraylist

Java中的

我想创建一个具有固定大小的array,因此我可以添加新元素,第一个元素将丢弃。

例如:

大小为array的{​​{1}}:5然后我添加" {1,2,3,4,5}"和#34; 6"退出所以我有1,我添加" {2,3,4,5,6}"和#34; 7"辍学:2 ......

所以我想添加一个新的Element并删除第一个Element。有没有一种简单的方法可以做到这一点,还是我必须自己实现它?

我可以使用{3,4,5,6,7}执行此操作,只删除第一个ArrayList吗? 如果我删除Object的第一个Object,第二个对象会自动成为第一个对象吗?

由于

3 个答案:

答案 0 :(得分:2)

假设您不一定需要List,您可以使用 Google Guava 中的EvictingQueue这是一个非阻塞队列自动驱逐尝试将新元素添加到队列并且它已满时,队列头部的元素。

// 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);

<强>输出:

[1, 2, 3, 4, 5]
[2, 3, 4, 5, 6]

答案 1 :(得分:-1)

只需将第i个元素设置为第i个+ 1个元素,然后在最后添加你想要的东西:

static int[] g(int arr[],int n){
    for(int i=0;i<arr.length-1;i++){
        arr[i]=arr[i+1];
    }
    arr[arr.length-1] = n;
    return arr;
}

public static void main(String [] args) {
    int[] arr = {1,2,3,4,5};
    System.out.println(Arrays.toString(g(arr,6)));
}

输出:

[2, 3, 4, 5, 6]

答案 2 :(得分:-1)

您可能需要执行以下操作:

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);
    }
}

并且输出看起来像这样:

  

2 3 4 5 6
  3 4 5 6 7
  4 5 6 7 8