【问题标题】:Insert int Array to ArrayList将 int 数组插入 ArrayList
【发布时间】:2016-06-30 18:16:53
【问题描述】:

我可以将数组插入数组然后在 Java 中读取它吗?像这样的:

ArrayList<Integer> array = new ArrayList<>();
array.add([1,4,5]);
array.add([3,7,2]);

数组:

{ [1,4,5], [3,7,2] }

读起来像:

print(array[0][1]); //prints 4 

谢谢。

【问题讨论】:

  • 不是直接的,但编写代码不需要太多(IMO)
  • arraylist 是一个列表,而不是数组。他们是不同的东西。你可能想创建一个二维数组
  • 我无法想象任何明智的 Java 代码会在添加您显示的数组时在 [1][2] 处打印 4(即使您使用一些二维数组类型,如数组数组)
  • 抱歉搞错了,我只是人类......

标签: java arrays arraylist


【解决方案1】:

您可以编写 ArrayList&lt;int[]&gt; 并传递像 .add(new int[]{...}) 这样的值。

例如,

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

要打印出值,您应该首先通过get(int index) 获取一个int[] 数组,然后通过[index] 从该数组中获取一个值:

System.out.print(list.get(0)[0]); // prints 1

关于 cmets 的混乱情况。

  1. 这里没有原始类型。我没有在任何地方写,例如ListList&lt;Object&gt;
  2. int[] 是一个数组,因此它是一个引用类型,可以用作泛型参数。
  3. int 是一个不能与泛型一起工作/使用的原语。考虑一下它的包装类 - Integer
  4. 我使用了上面的钻石&lt;&gt;。为什么?防止出现“样板代码”。

在 Java SE 7 及更高版本中,只要编译器能够确定或推断类型,您就可以将调用泛型类的构造函数所需的类型参数替换为一组空的类型参数 (&lt;&gt;)来自上下文的论据。这对尖括号&lt;&gt;,非正式地称为菱形。
List&lt;int[]&gt; list = new ArrayList&lt;&gt;();
List&lt;int[]&gt; list = new ArrayList&lt;int[]&gt;();相当于前面的

【讨论】:

  • @Berdesdan 我认为您混淆了术语。 int 是原始类型,而不是原始类型。
  • 修复了你的 -1,我有时不了解这个社区。你的回答完全没问题
  • @SotiriosDelimanolis 指出 - “原始类型是没有任何类型参数的泛型类或接口的名称”
  • @AndrewTobilko 对混乱感到抱歉,你没有错。我对原始/原始类型感到困惑。 Jeutnarg 的链接清除了它..
  • @Berdesdan 即使这样也不正确。钻石算子&lt;&gt;这里就ok了。
【解决方案2】:

用最少的代码行快速填充数组列表:

    Integer[] numArray = {1, 2, 3, 4, 5, 0, 9, 8, 7, 6};
    List<Integer> numList = new ArrayList<>(Arrays.asList(numArray));

【讨论】:

    【解决方案3】:

    您可以将整数数组添加到arraylist,但数组列表必须定义为:

    List<int[]> list = new ArrayList<int[]>();
    

    事实上,更通用的版本应该是

    List<Object> list = new ArrayList<Object>();
    

    array.add([1,4,5]);正确实现

    list.add(new int[]{1,4,5});

    print(array[1][2]); 正确实现为:

    System.out.println(((int [])list.get(1))[2]);
    

    【讨论】:

    • 当您知道 int[] 是您想要使用的类型时,为什么还要使用更通用的版本?
    • 我从来没有说过你必须使用它,我只是想让 OP 意识到它。
    • 但如果有的话,它只会让 OP 更加困惑。 IMO 它会混淆你的答案,但这没什么大不了的。
    【解决方案4】:

    ArrayList 是 List 类型。

    如果要创建二维数组(数组内的数组)

    int[][] a = new int[][]{{1,4,5},{3,7,2}};
    System.out.println(a[0][1]);
    

    【讨论】:

      【解决方案5】:

      你想使用 ArrayList 的 ArrayLists

          ArrayList<ArrayList<Integer>> intArrays = new ArrayList<ArrayList<Integer>>();
          //rows
          for(int i =0;i<4;i++)
          {
      
              intArrays.add(new ArrayList<Integer>());
              //cols
              for(int j=0;j<4;j++)
              {
                  intArrays.get(i).add(j);
              }
          }
          //rows
          for(int i =0;i<4;i++)
          {
      
              //cols
              for(int j=0;j<4;j++)
              {
                  System.out.print(intArrays.get(i).get(j));
              }
              System.out.println();
          }
      

      【讨论】:

        【解决方案6】:

        这已经过测试并且正在运行。

            int[] ar = {10, 20, 20, 10, 10, 30, 50, 10, 20};
        
            ArrayList<Integer> list = new ArrayList<>();
        
            for(int i:ar){
                list.add(new Integer(i));
        
            }
            System.out.println(list.toString());
        
            // prints : [10, 20, 20, 10, 10, 30, 50, 10, 20]
        

        【讨论】:

          猜你喜欢
          • 2013-02-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-12
          • 2012-08-08
          • 2012-05-15
          • 1970-01-01
          相关资源
          最近更新 更多