我正在尝试在ArrayList中插入元素。 这些元素没有被添加,我找不到原因。
这就是我所拥有的:
t [0] [0] =>帐户
t [0] [1] =>平衡
class Banking4
{
int i=0;
ArrayList[][] t = new ArrayList[2][10];
Scanner sc=new Scanner(System.in);
void addAccount() {
for(int i=0;i<t.length;i++)
{
if(t[i][0]==null)
{
System.out.println("Enter the account no:");
int a=sc.nextInt();
t[0][0] = new ArrayList();
t[0][0].add(a);
t[0][1] = new ArrayList();
t[0][1].add(0);
System.out.println("Account number is:"+a +"Current balance is:"+t[0][1]);
break;
}
}
}
}
答案 0 :(得分:0)
ArrayList不是数组类型。而不是将它视为一个你需要制作嵌套的ArrayList。
// create
ArrayList<ArrayList<FooBar>> list=new ArrayList<ArrayList<FooBar>>();
// add to first layer
list.set(index, new ArrayList<FooBar>());
// add to second layer
list.get(index1).set(index2, new FooBar());
// etc
所以基本上为了访问第二层arraylists你需要在第一个列表中使用get()。
答案 1 :(得分:0)
您只是添加/更新2D arraylist数组的第0行,您需要更改:
t[0][0] = new ArrayList();
t[0][0].add(a);
t[0][1] = new ArrayList();
t[0][1].add(0);
到
t[i][0] = new ArrayList();
t[i][0].add(a);
t[i][1] = new ArrayList();
t[i][1].add(0);
你没有以正确的方式做到这一点。你应该把它保存为ArrayList的ArrayList。
希望这有帮助
答案 2 :(得分:0)
您正在使用ArrayLists的二维数组(实际上是一个3D数组) - 而不是2D ArrayList。项目t [0] [0](或t [0] [1])是一个ArrayList本身,这就是你得到意想不到的结果的原因。
如果要使用ArrayList创建2D数组,请按以下方式使用它:
ArrayList<ArrayList<Integer>> t = new ArrayList<ArrayList<Integer>>(20);
t.get(0) = new ArrayList<Integer();
t.get(0).add(a);
这将创建一个ArrayLists of Integers的ArrayList,您可以使用get(int index)
方法访问它。
如果您的阵列大小固定,我建议您使用带有[]
表示法的本机Java数组:
int[][] t = new int[2][10];
t[0][0] = a;
t[0][1] = 0;
System.out.println("Account number is:"+t[0][0] +". Current balance is:"+t[0][1]);