2012-05-22 90 views
-1

看看这段代码:通过列表迭代<String[]>

/* 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只能是在这个空位置

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

回答

4

您需要将一个List对象分配给var。

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

您必须实例化列表。

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

初始化/分配列表

List<String[]> listBySin = null; 

使用以下初始化列表

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

您需要先创建对象后,才能调用方法上,而不是。喜欢的东西

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

进入根据循环

+0

请注意,泛型类型在Java 7中不再需要构造函数。 –

2

You must initializeList之前。您可以使用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[]>(); 

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