迭代List <string []> </string []>

时间:2012-05-22 10:08:29

标签: java for-loop

看看这段代码:

/*   Implementation to populate List<String[]> schedule  */

public List<String[]> getSchedBySIN(String sin) {
    List<String[]> listBySin = null;

    for (String[] temp : schedule) {
        if(temp[0].equals(sin)) listBySin.add(temp);
    }

    return listBySin;
}
listBySin行上的

...listBySin.add(temp);带有黄色下划线,Eclipse告诉我:空指针访问:变量listBySin在此位置只能为空

为什么?如果第一个元素等于listBySin,我想要的是schedule来自sin的字符串数组。

5 个答案:

答案 0 :(得分:4)

您需要为var分配List个对象。

List<String[]> listBySin = new ArrayList<String[]>();

答案 1 :(得分:3)

您必须实例化列表。

List<String[]> listBySin = new ArrayList<String[]>();

答案 2 :(得分:3)

初始化/分配您的列表而不是

List<String[]> listBySin = null;

使用以下内容初始化您的列表

List<String[]> listBySin = new ArrayList<String[]>();

答案 3 :(得分:2)

您需要首先创建Object,然后才能调用该方法。像

这样的东西
listBySin = new ArrayList<String[]>();

进入循环之前

答案 4 :(得分:2)

You must initialize List根据。您可以使用ArrayList或Vector或Stack或CopyOnWriteArrayList初始化。

    List<String[]> str=new ArrayList<String[]>();
    List<String[]> str=new LinkedList<String[]>();
    List<String[]> str=new Stack<String[]>();
    List<String[]> str=new Vector<String[]>();
    List<String[]> str=new CopyOnWriteArrayList<String[]>();

这一切都取决于你的需要。