Java ArrayList为什么这样做?

Java ArrayList为什么这样做?,java,arraylist,Java,Arraylist,我有几个问题需要解决。在守则的这部分,, al.添加(1,“A2”);将1添加到ArrayList做什么?在输出中,将1添加到arraylist看起来并没有什么作用。此外,在本部分代码中,al.remove(2);似乎要从arraylist中删除,但这是为什么?A不应该是3,因为它在第三位 import java.util.*; public class ArrayListDemo { public static void main(String args[]) {

我有几个问题需要解决。在守则的这部分,, al.添加(1,“A2”);将1添加到ArrayList做什么?在输出中,将1添加到arraylist看起来并没有什么作用。此外,在本部分代码中,al.remove(2);似乎要从arraylist中删除,但这是为什么?A不应该是3,因为它在第三位

import java.util.*;

public class ArrayListDemo
{
    public static void main(String args[])
    {
        // create an array list
        ArrayList al = new ArrayList();
        System.out.println("Initial size of al: " + al.size());

        // add elements to the array list
        al.add("C");
        al.add("A");
        al.add("E");
        al.add("B");
        al.add("D");
        al.add("F");
        al.add(1, "A2");
        System.out.println("Size of al after additions: " + al.size());

        // display the array list
        System.out.println("Contents of al: " + al);
        // Remove elements from the array list
        al.remove("F");
        al.remove(2);
        System.out.println("Size of al after deletions: " + al.size());
        System.out.println("Contents of al: " + al);
    }
}
以下是代码的输出:

Initial size of al: 0

Size of al after additions: 7

Contents of al: [C, A2, A, E, B, D, F]
删除后的al大小:5

Contents of al: [C, A2, E, B, D]
在索引1中添加了
A2
。请记住,
ArrayList
以索引0开头,因此输出刚好正确。与
al.remove(2)相同。它删除第三项,即
E


单击以下指向和的链接。

第一个索引是0。当您在位置
1添加时,它将成为第二项;当您删除位置
2时,您将删除第三项。

所有的第一个参数。添加(1,“A2”);是索引。 所以如果我有这样的东西:

[C、A、E、B、D、F]

我补充说 al.添加(1,“A2”)

我会得到[C,A2,A,E,B,D,F]

关于第二个问题

数组或列表从索引0开始 所以 01 2 3 4

所以当我有了这个:

[C、A2、A、E、B、D、F]

C在索引0中 A2在索引1中 A在索引2中

因此,删除(2)
删除一个

数组列表并列出所有从索引0开始的列表,因此当您这样做时

al.add(1, "A2");
您正在第二个位置插入
A2
,下面的所有其他元素都将向下移动


类似地,当您删除
2
时,您将删除第三项,下面的所有项将在列表中上移

,因此首先,Java中几乎所有的索引都将从0开始

因此,如果您有此阵列:

int[] example = {45, 33, 76, 21, 54};
那么示例[1]实际上等于第二个元素-33

所以,给你更多的例子:

example[0] == 45 
example[1] == 33 
example[2] == 76 
example[3] == 21 
example[4] == 54
现在,让我们谈谈让你困惑的方法

arrayList.add(index, item);
结果是:铝的含量:[C,A2,A,E,B,D,F]

在这里,首先要传递的是索引。第二件事是项目。索引是添加新项的位置。您将把新项放入该索引中,并将其他所有项移回一个索引

因此,在您的示例中,您有:

arrayList.add(1,"A1");
结果是正确的!术语“A1”被添加到位置索引1中(记住,它实际上是java中的第二个位置,因为您总是从0开始计数),其他所有内容都被1向后推


我希望这有帮助。祝你好运:)

让我们一步一步地浏览一下代码

al.add("C");
al.add("A");
al.add("E");
al.add("B");
al.add("D");
al.add("F");
生成一个

["C", "A", "E", "B", "D", "F"]
//0    1    2    3    4    5
然后

al.add(1, "A2");
al.remove("F");
中的“A2”
添加到
1
的位置,因此我们现在有一个

["C", "A2", "A", "E", "B", "D", "F"]
//0    1     2    3    4    5    6
然后

al.add(1, "A2");
al.remove("F");
这将从列表中删除条目
“F”

["C", "A2", "A", "E", "B", "D"]
//0    1     2    3    4    5
然后

al.remove(2);
这将从列表中删除“
A
”,因为“
A
”是索引
2
处的项,请记住,Java是零索引的

["C", "A2", "E", "B", "D"]
//0    1     2    3    4
仔细看看:


有关详细信息,请记住索引从0开始,而不是从1开始。比如说,

List list = new ArrayList();

list.add("a");
list.add("b");

如果要获取列表中的第一个元素“a”,必须执行以下操作:
list.get(0)
,而不是
list.get(1)

在java中,将“A2”添加到ArrayList?索引的第二个位置,从0开始,不是1。我想你应该阅读ArrayList nmelssx的API文档。我问了一些比这更感兴趣的问题,我收到了8张反对票:@cell,哈哈,有些人是混蛋。我又不是故意问一个愚蠢的问题。