如何访问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
另外 - 我如何向内部数组添加元素?
由于
答案 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在这里进行自动转换。