59

我是arraylist概念的新手。我制作了一个简短的程序,如下所示:

ArrayList<int[]> arl=new ArrayList<int[]>();
int a1[]={1,2,3};
arl.add(0,a1);
System.out.println("Arraylist contains:"+arl.get(0));

它给出了输出:Arraylist contains:[I@3e25a5

现在我的问题是:

  1. 如何显示正确的值,即 1 2 3。
  2. 我如何访问数组 a1 的单个元素,即如果我想知道 a1[1] 的值。
4

11 回答 11

78

首先,对于初始化容器,您不能使用原始类型(即int;您可以使用int[],但由于您只需要一个整数数组,我认为这没有用)。相反,您应该使用Integer,如下所示:

ArrayList<Integer> arl = new ArrayList<Integer>();

要添加元素,只需使用以下add功能:

arl.add(1);  
arl.add(22);
arl.add(-2);

最后但并非最不重要的一点是,对于打印,ArrayList您可以使用以下内置功能toString()

System.out.println("Arraylist contains: " + arl.toString());  

如果要访问i元素,其中i是从 0 到 array-1 长​​度的索引,您可以执行以下操作:

int i = 0; // Index 0 is of the first element
System.out.println("The first element is: " + arl.get(i));

我建议先阅读 Java Containers,然后再开始使用它们。

于 2012-05-07T06:34:50.713 回答
23
  1. 使用Arrays.toString( arl.get(0) ).

  2. arl.get(0)[1]

于 2012-05-07T06:28:01.130 回答
23

比这更简单。

List<Integer> arrayIntegers = new ArrayList<>(Arrays.asList(1,2,3));

arrayIntegers.get(1);

在第一行创建对象并在构造函数中将数组参数传递给 List。

在第二行中,您拥有 List 类的所有方法: .get (...)

于 2017-06-15T11:03:38.533 回答
6

设置:

    List<int[]> intArrays=new ArrayList<>();
    int anExample[]={1,2,3};
    intArrays.add(anExample);

要按索引检索ArrayList 中的单个 int[] 数组:

    int[] anIntArray = intArrays.get(0); //'0' is the index
    //iterate the retrieved array an print the individual elements
    for (int aNumber : anIntArray ) { 
        System.out.println("Arraylist contains:" + aNumber );
    }

要检索ArrayList 中的所有 int[] 数组

    //iterate the ArrayList, get and print the elements of each int[] array  
    for(int[] anIntArray:intArrays) {
       //iterate the retrieved array an print the individual elements
       for (int aNumber : anIntArray) {
           System.out.println("Arraylist contains:" + aNumber);
       }
}

可以基于此逻辑执行输出格式化。祝你好运!!

于 2017-11-30T15:50:56.757 回答
5

在java中,数组是一个对象。因此,对 arl.get(0) 的调用将返回一个原始 int[] 对象,该对象在您对 System.out 的调用中显示为 ascii。

因此,您第一个问题的答案是

System.out.println("Arraylist contains:"+Arrays.toString( arl.get( 0 ) ) );

如果您要查找特定元素,则必须按原样引用返回的 int[] 对象。你的第二个问题的答案是这样的

    int[] contentFromList = arl.get(0);
    for (int i = 0; i < contentFromList.length; i++) {
        int j = contentFromList[i];
        System.out.println("Value at index - "+i+" is :"+j);
    }
于 2012-05-07T06:37:45.537 回答
4

您必须使用<Integer>而不是<int>

int a1[] = {1,2,3};
ArrayList<Integer> arl=new ArrayList<Integer>();
for(int i : a1) {
    arl.add(i);        
    System.out.println("Arraylist contains:" + arl.get(0));
}
于 2015-10-18T15:57:21.247 回答
2

每个人都是对的。您不能直接打印 int[] 对象,但也没有必要不使用整数数组的 ArrayList。

使用,

Arrays.toString(arl.get(0))

意味着如果您想在中间插入任何内容(例如逗号),则将 String 对象拆分为子字符串。

这是我认为 amv 从 int 数组的角度寻找的内容。

System.out.println("Arraylist contains: " 
    + arl.get(0)[0] + ", " 
    + arl.get(0)[1] + ", " 
    + arl.get(0)[2]);

这个答案对于 amv 来说有点晚了,但仍然可能对其他人有用。

于 2014-03-31T22:45:17.653 回答
0

java.util.Arrays.toString()将 Java 数组转换为字符串:

System.out.println("Arraylist contains:"+Arrays.toString(arl.get(0)));
于 2017-08-06T09:41:03.687 回答
0

Integer 是包装类,int 是原始数据类型。总是更喜欢在 ArrayList 中使用 Integer。

于 2020-01-11T06:49:22.250 回答
0
ArrayList<Integer> list = new ArrayList<>();
int number, total = 0;

for(int i = 0; i <= list.size(); i++){
    System.out.println("Enter number " + (i + 1) + " or enter -1 to end: ");
    number = input.nextInt();

    list.add(number);

    if(number == -1){
        list.remove(list.size() - 1);
        break;
    }
}
System.out.println(list.toString());

for(int i: list){
    System.out.print(i + "  ");
    total+= i;
}
System.out.println();
System.out.println("The sum of the array content is: " + total);
于 2017-09-07T11:31:29.813 回答
0

对于没有经验的人,我决定在这里添加一个示例来演示如何根据这个问题输入和输出整数数组的 ArrayList 。

    ArrayList<Integer[]> arrayList = new ArrayList<Integer[]>();
    while(n > 0)
    {
        int d = scan.nextInt();
       Integer temp[] = new Integer[d];
        for (int i = 0 ; i < d ; i++)
        {
            int t = scan.nextInt();
            temp[i]=Integer.valueOf(t);
        }
        arrayList.add(temp);
        n--;
    }//n is the size of the ArrayList that has been taken as a user input & d is the size 
    //of each individual array.

     //to print something  out from this ArrayList, we take in two 
    // values,index and index1 which is the number of the line we want and 
    // and the position of the element within that line (since the question
    // followed a 1-based numbering scheme, I did not change it here)

    System.out.println(Integer.valueOf(arrayList.get(index-1)[index1-1]));

感谢这里对这个问题的回答,我得到了正确的答案。我相信这令人满意地回答了 OP 的问题,尽管有点晚了,并且可以作为经验较少的人的解释。

于 2020-06-30T13:46:41.777 回答