Java Multidimensional ArrayList Int

时间:2013-09-16 22:10:06

标签: java arrays multidimensional-array arraylist integer

如何访问Arraylist中的整数数组,这两个数组都可以调整大小?

到目前为止我有这个代码:

List<Integer[]> vertices_passed = new ArrayList<Integer[]>();

我想进入vertices_passed并向Integer数组中添加一个元素。

这样的事情:

vertices_passed.get(certain_index).set(index_of_integer_array, Integer.valueof(9))

是否有更好的方法可以使用ArrayLists创建如下所示的数据结构:

ArrayList {
    [0]
        [0] A
        [1] B
    [1]
        [0] A
        [1] C
        [2] F
        [3] G
    [2]
        [0] D
        [1] C
        [2] F
        [3] G
        [4] H
    [3]
        [0] A
        [0] D
        [0] I

另外 - 我如何向内部数组添加元素?

由于

4 个答案:

答案 0 :(得分:2)

可以这样做:

package com.sandbox;


import java.util.ArrayList;
import java.util.List;

public class Sandbox {

    public static void main(String[] args) {
        List<Integer[]> dt = new ArrayList<>();
        dt.add(new Integer[2]);
    }
}

但正如提到的评论一样,使用起来非常不方便。原因是您不能方便地调整阵列的大小。如果要使它们变大或变小,则必须重新创建它们并复制元素。

更好的方法是:

package com.sandbox;


import java.util.ArrayList;
import java.util.List;

public class Sandbox {

    public static void main(String[] args) {
        List<List<Integer>> dt = new ArrayList<>();
        dt.add(new ArrayList<Integer>());
        dt.get(0).add(1);
    }
}

ArrayList,顾名思义,由数组支持。他们(可能,我没有看过源代码)是一个抽象,而不是你想要完成的事情。您只需在使用它们时就不必考虑较低级别的详细信息。

答案 1 :(得分:1)

您可以使用:ArrayList<ArrayList<Integer>>

然后你可以简单地添加一个元素:

ArrayList<ArrayList<Integer>> structure = new ArrayList<ArrayList<Integer>>();
structure.add(new ArrayList<Integer>());//add empty array
structure.get(index0).add(value));

这是如何运作的:

首先创建一个将存储其他数组列表的ArrayList。

然后我们在第一个数组列表的索引0添加第二个arraylist。

图形上可以看一下像

+---+
|   |
| o |
|   |
+---+

square是一个带有一个元素的ArrayList,o是一个零元素的arrayList。

如果您声明structure.get(0)您访问大型ArrayList的第一个元素,那么它将以图形方式返回o。然后我调用该对象的add方法(o)并添加一个值。

现在结构如下:

+---------+
|         |
| +-----+ |
| |value| |
| +-----+ |
|         |
+---------+

如果我重复命令,这将导致:

+---------------+
|               |
| +-----+-----+ |
| |value|value| |
| +-----+-----+ |
|               |
+---------------+

答案 2 :(得分:0)

取代

vertices_passed.get(certain_index).set(index_of_integer_array, Integer.valueof(9))

使用

vertices_passed.get(certain_index)[index_of_integer_array] = 9;

如果您使用的是旧版本的Java,则需要Integer.valueOf(9)new Integer(9),但过去几年不需要这么多。

您必须创建Integer数组并在设置之前将其放入List

int n = ......无论如何......    vertices_passed.set(new Integer [n]);

答案 3 :(得分:0)

这将有效:

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

vertices_passed.get(certain_index).set(index_of_integer_array, 9)

不需要这样做:Integer.valueof(9),只需要9,因为Java在这里进行自动转换。

相关问题