Java的;将数组数组保存到集合中

时间:2016-01-16 22:38:25

标签: java arrays list arraylist

所以我有这个数据

 { { 1,  3, 5, 3, 1 },
   { 3,  5, 6, 5, 1 },
   { 7,  2, 3, 5, 0 },
   { 12, 1, 5, 3, 0 },
   { 20, 6, 3, 6, 1 }, 
   { 20, 7, 4, 7, 1 } }

我希望将其保存到某种集合,列表或集合中。因此,如果该集合被命名为List,如果我要键入List[0][3],它将返回到int 4。 我试过

ArrayList<int[]> myNumberList = new ArrayList<int[]>();

但我无法将这些数据放入列表

3 个答案:

答案 0 :(得分:1)

数组访问运算符[]仅适用于数组。所以你只能创建二维数组。

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

但是你无法创建任何可以使用[]来访问它的值的集合。

Yoy仍然可以使用数组列表。但是你必须使用get()方法索引第一个维度

List<int[]> a2 = Arrays.asList(
        new int[]{1, 3, 5, 3, 1},
        new int[]{3, 5, 6, 5, 1},
        new int[]{7, 2, 3, 5, 0},
        new int[]{12, 1, 5, 3, 0},
        new int[]{20, 6, 3, 6, 1},
        new int[]{20, 7, 4, 7, 1}
);

System.out.println(a2.get(0)[3]);

答案 1 :(得分:0)

您可以将其设为Integer[][]并创建List<List<Integer>>。像,

Integer[][] arr = { { 1, 3, 5, 3, 1 }, { 3, 5, 6, 5, 1 }, 
        { 7, 2, 3, 5, 0 }, { 12, 1, 5, 3, 0 }, { 20, 6, 3, 6, 1 }, 
        { 20, 7, 4, 7, 1 } };
System.out.println(Arrays.deepToString(arr));
List<List<Integer>> al = new ArrayList<>();
for (Integer[] inArr : arr) {
    al.add(Arrays.asList(inArr));
}
System.out.println(al);

哪个输出(为此帖格式化)

[[1, 3, 5, 3, 1], [3, 5, 6, 5, 1], [7, 2, 3, 5, 0], 
                  [12, 1, 5, 3, 0], [20, 6, 3, 6, 1], [20, 7, 4, 7, 1]]
[[1, 3, 5, 3, 1], [3, 5, 6, 5, 1], [7, 2, 3, 5, 0], 
                  [12, 1, 5, 3, 0], [20, 6, 3, 6, 1], [20, 7, 4, 7, 1]]

答案 2 :(得分:0)

很难回答你在特定情况下真正需要的东西。但是一般来说,二维数组的列表等价,我想,你想要的是List<List<Integer>>类型,而在 java-8 你可以用这种方式转换它:

    int a[][] = new int[][]{
            {1, 3, 5, 3, 1},
            {3, 5, 6, 5, 1},
            {7, 2, 3, 5, 0},
            {12, 1, 5, 3, 0},
            {20, 6, 3, 6, 1},
            {20, 7, 4, 7, 1}};

    List<List<Integer>> l2 = new ArrayList<>();
    Stream.of(a).forEach(a1 -> l2.add(Arrays.stream(a1).boxed().collect(Collectors.toList())));