Arraylists和数组

时间:2016-05-22 09:45:23

标签: java arrays arraylist

我在阵列中有2个arraylists,如下所示:

public Object[] loopthrougharrays() {
    Object[] tables = new Object[2];
    tables[0] = list;
    tables[1] = listB15;
    return tables;
}

我的2个arraylists被称为listlistB15

然后,我可以通过其他方法调用我的arraylists,如

loopthrougharrays()[1] = new ArrayList();

listB15

但是,如果我尝试将项目添加到ArrayList

loopthrougharrays()[1].add(s)

其中s是变量

Java无法将loopthrougharrays()[1]识别为ArrayList

如何通过此方法添加变量?

我似乎收到以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

如果我执行以下操作,我的整个代码都可以正常工作:

listB15 = new ArrayList();
listB15.add(s)

正如我所料。

4 个答案:

答案 0 :(得分:2)

问题是你正在对方法调用进行分配。 你正在调用这个方法两次。 所以第二行创建另一个数组列表

loopthrougharrays()[1] = new ArrayList();
loopthrougharrays()[1].add(s)  //This one will call the method again
// and get new array list and the previous value is lost

简单修复

 Object[] getTwoArrays =  loopthrougharrays()
 ArrayList L0 = <ArrayList> getTwoArrays[0];
 ArrayList L1 = <ArrayList> getTwoArrays[1];

 L1 = new ArrayList();
 L1.add(s);

这里调用loopthrougharrays()一次,将返回值存储到本地引用中然后它就可以了

当我尝试提供快速修复时,我不会在对象数组中返回null arraylits,然后在方法外部进行初始化并执行赋值。它很笨拙。

一个较小的邪恶方式是

 class SomeX {
    private List Ll = new ArrayList();
    private List L2  = new ArrayList();
    public addToL1(Object s) {
        L1.add(s);
    }
    public addToL2(Object s) {
        L2.add(s)
    }
 }

 //main method
 SomeX x = new SomeX();
 x.addToL1(s);
 x.addToL2(s);

答案 1 :(得分:1)

我不知道你想用它做什么,但这不是一个好习惯。但是,如果将Object数组元素转换为ArrayList,它可能会起作用,如:

((ArrayList)t.loopthrougharrays()[1]).add(s);

删除loopthrougharrays()[1] = new ArrayList();(如@Tom评论说,谢谢)或用

替换它
ArrayList myNewArrayList = (ArrayList)loopthrougharrays()[1];
myNewArrayList.add(s);

答案 2 :(得分:0)

在向列表中添加任何内容之前将其投射。

((ArrayList<YourVariableType>)(loopthrougharrays()[1])).add(s);

但请记住,这不是一个好习惯。我很确定,你可以通过更好的设计和最佳实践来实现你想要达到的目标。

答案 3 :(得分:0)

你的表是一个对象数组,

tables[1] = listB15; //表格仍为array of object,自Object is the Super class以来,listB15被视为对象。

要实现你想要的,你可以试试这些方法:

  1. ((List<String>) tables[1]).add("hello world"); // cast it with List<String> (for example)

  2. 创建一个列表

    List<List<String>> tables = new ArrayList<List<String>>();
    
        tables1.add(list) ; 
        tables1.add(listB15) ; 
    
        tables1.get(1).add("hello world");
        System.out.println(tables);