0

我有一个ArrayList自己的班级Case。类案例提供了getCaseNumber()我想将所有案例案例编​​号添加到String[] caseNumber. 我试过这个

public String[] getCaseNumberToTempList(ArrayList<Case> caseList) {

    String[] objectCaseNumber = null; 

    for(int i = 0; i < caseList.size(); i++) {
        objectCaseNumber[i] = caseList.get(i).getCaseNumber();  
    }

    return objectCaseNumber;

}

但是我的编译器抱怨objectCaseNumberfor 循环内部的那一点是空的。我怎样才能完成这个?

4

3 回答 3

3

好吧,您需要先创建一个数组,然后使用对该数组的引用来初始化变量。(有关更多信息,请参阅数组的 Java 教程。)例如:

String[] objectCaseNumber = new String[caseList.size()]; 

或者,改为构建一个List<String>(例如使用ArrayList)。这更灵活 - 在这种情况下,它很简单,因为您预先知道大小,但在其他情况下,能够只添加到列表中,让生活变得更简单。

于 2012-07-25T08:02:33.280 回答
3
  1. 在惯用的 Java 中,您不会将ArrayList其用作参数类型。使用List.
  2. 开销稍大,但更简单,更易读的代码是在另一个中累积List,然后转换为一个数组:

public String[] getCaseNumberToTempList(List<Case> caseList) {
  final List<String> r = new ArrayList<String>();
  for (Case c : caseList) r.add(c.getCaseNumber());
  return r.toArray(new Case[0]);
}

ArrayList在您的代码中,由于通过 随机访问的性能影响,坚持这样做是有意义的get,但是如果您使用这种代码(我建议养成它的习惯),那么您可以使用任何List具有相同结果的代码。

于 2012-07-25T08:07:45.853 回答
0

好吧,我认为您可能将数组误解为原始类型。java中的数组是对象,在访问它之前需要对其进行初始化。

于 2012-07-25T08:08:20.837 回答