Java中的动态ArrayList

Rav*_*r11 2 java arraylist

我在Java中有一个疑问,我们可以创建动态的ArrayList还是String[]在for循环内。例如,在我的应用程序中,有类别字段(不是静态的,是从服务器获取的),我想根据类别的大小来创建ArrayListString[]对象。如何ArrayList在循环中创建动态效果?

我的代码如下:

for(int i =0; i<20; i++)
{
    ArrayList <String> list(i) = new ArrayList<String>();
}
Run Code Online (Sandbox Code Playgroud)

我们可以创建这样的对象吗?基于类别位置,我可以调用诸如list(positon)之类的列表项,我们可以像这个Java吗?

Tud*_*dor 5

整个要点ArrayList是,您不必担心大小。随着添加更多项目,它会动态调整自身大小。你可以看到源代码add

410       public boolean add(E e) {
411           ensureCapacityInternal(size + 1);  // Increments modCount!!
412           elementData[size++] = e;
413           return true;
414       }
Run Code Online (Sandbox Code Playgroud)

ensureCapacityInternal

183       private void ensureCapacityInternal(int minCapacity) {
184           modCount++;
185           // overflow-conscious code
186           if (minCapacity - elementData.length > 0)
187               grow(minCapacity);
188       }
Run Code Online (Sandbox Code Playgroud)

grow

204       private void grow(int minCapacity) {
205           // overflow-conscious code
206           int oldCapacity = elementData.length;
207           int newCapacity = oldCapacity + (oldCapacity >> 1);
208           if (newCapacity - minCapacity < 0)
209               newCapacity = minCapacity;
210           if (newCapacity - MAX_ARRAY_SIZE > 0)
211               newCapacity = hugeCapacity(minCapacity);
212           // minCapacity is usually close to size, so this is a win:
213           elementData = Arrays.copyOf(elementData, newCapacity);
214       }
Run Code Online (Sandbox Code Playgroud)


Sam*_*iya 5

ArrayList 是一个动态数组,即您可以添加新元素,例如,

ArrayList <String> list = new ArrayList<String>();
for(int i =0; i<20; i++)
{
 list.add("string"+i);
}
Run Code Online (Sandbox Code Playgroud)

我可以调用诸如list(positon)之类的列表项,我们可以像这个java吗?

ArrayList具有get(position)从位置获取Object的方法。

String str1 = list.get(0);//0th position 
Run Code Online (Sandbox Code Playgroud)