0

リストから最初のいくつかの要素を取得したいだけです。しかし、これを行うと、行にヌルポインターがあります

returnList.add(returnList1.get(i))

をテストしましたreturnList1。値があります。

ArrayList<someObject> returnList1 = new ArrayList<someObject>();
ArrayList<someObject> returnList = new ArrayList<someObject>();
returnList1=bunruiSummaryService.getFromDB(param);
int j = 10;
if(returnList1.size() < j){
    j = returnList1.size();
}
for(int i = 0; i<j; i++){
    returnList.add(returnList1.get(i));
}
4

4 に答える 4

0

この小さなコードには問題が多すぎます。私がどのように見たいかをお見せしましょう:

//somewhere else defined
private static final int MAX_SIZE_OF_SOME_LIST = 10; //instead of j=10, you simply have to know what the number 10 represents!

List<SomeObject> resultList = new ArrayList<someObject>();
List<SomeObject> returnList = bunruiSummaryService.getFromDB(param); //at this point, make sure to return an empty list instead of null
int maxSize = MAX_SIZE_OF_SOME_LIST;
if(returnList.size() < MAX_SIZE_OF_SOME_LIST){
    maxSize = returnList.size(); //if you ensured the returned list is not null, if the returned list is empty, you get 0 here
}
//even so
int maxSize = returnList.size() < MAX_SIZE_OF_SOME_LIST ? returnList.size() : MAX_SIZE_OF_SOME_LIST;

for(int i = 0; i<maxSize; i++){
    resultList.add(returnList.get(i));
}

//or you could use subList:
resultList.addAll(returnList.subList(0, maxSize));
于 2013-06-01T08:32:22.943 に答える
0

まず第一に、コードには多くの抜け穴があります。

NPEに来て、

returnList1=bunruiSummaryService.getFromDB(param); 戻るか null

初期化されていない可能性がありますreturnList

returnList.add(returnList1.get(i))
于 2013-06-01T08:16:47.227 に答える