以最大大小启动ArrayList

时间:2016-08-03 08:07:47

标签: java arrays arraylist

是否有可能以固定大小启动ArrayList,因此它可能不会增加更多,并将所有初始占用率启动为0?在实际上强制它的行为像普通的数组,所以我们可以使用add()到数组大小。

3 个答案:

答案 0 :(得分:4)

为什么不使用普通Integer[] arr = new Integer[desiredLength]; Arrays.fill(arr,0); List<Integer> list = Arrays.asList(arr); 而不是array

ArrayList基本上只是一个数组,支持我们可能需要添加更多项目的情况。如果我们不改变ArrayList的大小,那就像传统的数组一样

答案 1 :(得分:1)

您可以使用

List<Integer> list = Arrays.asList(new Integer[desiredLength]);

生成固定大小List<Integer>,其中所有元素都初始化为null。然后,您可以使用list.set(index,value)修改List的元素。但是,您无法使用add,因为add更改了size的{​​{1}},这在固定大小的列表中是不允许的。

如果要将List初始化为非空值,可以执行以下操作:

List

答案 2 :(得分:1)

通过仅使用arraylist,您可以确保arraylist的最小尺寸:

ArrayList<T> myArrayList = new ArrayList();
myArrayList.ensureCapacity(n);

但是,这并没有设置固定大小,只是大于n的东西,并且它不会阻止你添加超过n。

正如其他人所说,你可能最好不要做别的事。如果你真的想要实现这一点,你可以编写自己的集合:

public class MyArrayList<T> {
  ArrayList<T> arrayList;
  int size;

  public MyArrayList(int size) {
    this.size = size;
    arrayList = new ArrayList<>();
    arrayList.ensureCapacity(size);
  }

  public void add(T x) {
    if (arrayList.size() >= size) {
      throw new IllegalStateException();
    }
    arrayList.add(x);
  }

  //remove, etc.. . You can even extend/implement arrayList/list if you want to do polymorphism.
}