【问题标题】:ArrayList of int array in javajava中int数组的ArrayList
【发布时间】:2012-05-15 16:45:11
【问题描述】:

我是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] 的值。

【问题讨论】:

  • 请注意:ArrayList 并不表示“数组列表”,而是在内部使用数组的列表。所以你可以使用ArrayList&lt;Integer&gt; 并添加你的值:arl.add(Integer.valueOf(1); ...
  • 我将此问题解释为需要一个整数数组列表。这似乎很明确。他们正在尝试获取(0)并期望该值是[1,2,3]。大多数答案似乎都在回答错误的问题。

标签: java arraylist


【解决方案1】:

对于没有经验的人,我决定根据这个问题here添加一个示例来演示如何输入和输出整数数组的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]));

感谢这个问题的答案here,我得到了正确的答案。我相信这可以令人满意地回答 OP 的问题,虽然有点晚,但可以作为经验不足的人的解释。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      设置:

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

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

      【讨论】:

      • @SumitRamteke - 您的编辑有效地使帖子不是问题的答案。
      • 如果有这种感觉,我很抱歉。我希望你不赞成我的编辑,尽管它无论如何都是以个人方式寻找解决方案。我已经在方式上进行了更改,以使其理解您所写的内容是正确的,但以通用的方式。只是遵循社区实践,不要采取其他方式
      • 这对我有帮助。我正用头撞墙,试图弄清楚为什么 ArrayList a = new ArrayList() 不起作用。我发现 Java 语法很复杂。我猜 java 认为 long[1], long[2], long[3] 都是同一类型?
      【解决方案4】:

      比这更简单。

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

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

      在第二行你有 List 类的所有方法:.get (...)

      【讨论】:

      • 注意:如果您尝试将 int[] 转换为 List&lt;Integer&gt;,这将不起作用
      【解决方案5】:
      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);
      

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

          你必须使用&lt;Integer&gt; 而不是&lt;int&gt;

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

          【讨论】:

          • 他要的是 list-of-array-of-int,而不是 list-of-int。
          • 但是如果您阅读他的问题,您就会明白他是新来的,只是试图获取 int 列表并通过访问特定索引来获取值))
          • 我读过它,似乎很清楚他想要 list-of-array-of-int。例如,他正在区分arl[0]a1[0]
          【解决方案8】:

          每个人都是对的。不能直接打印 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 来说有点晚了,但仍然可能对其他人有用。

          【讨论】:

            【解决方案9】:

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

            【讨论】:

              【解决方案10】:

              首先,对于初始化容器,您不能使用原始类型(即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,然后再开始使用它们。

              【讨论】:

                【解决方案11】:
                1. 使用Arrays.toString( arl.get(0) )

                2. arl.get(0)[1]

                【讨论】:

                • 并回答问题 2:arl.get(0)[i]
                猜你喜欢
                • 1970-01-01
                • 2013-07-05
                • 1970-01-01
                • 2022-06-12
                • 2015-03-16
                • 2013-09-21
                • 1970-01-01
                • 2011-04-08
                • 1970-01-01
                相关资源
                最近更新 更多