2017-05-15 9 views
1

空のフィールドを持つArraylistを処理するのに問題があります。空のフィールドを持つArrayList

私はExcelのリストから値を持ち、いくつかのセルが空です(例を示します)。

Column A Column B Column C Column D 

Val1  Val2  Val3  Val4 

Bla1  Bla2  Bla3 

Hug1  Hug2  Hug3  Hug4 

... 

これらの値は、これまでのArraylistにあります。今私はスイッチケースを持っています。ここで私は列Dを選択します。問題は今私がヌルフィールドを扱うことができないということです。私の出力にはnullがないので、これらは削除するか、ステップオーバーする必要があります。 私はこれをしようとしているので、私はNULLポインタの例外があります。ここで

はいくつかのコードです:

private Arraylist<ExcelReader> el; 

private void doSomething() { 

    switch (chooseColumn) { 

    // ArrayList is loaded 
    //… 
    case “D”: 
     // here I want to remove the null fields 
     for (int c = 0; c <= el.size(); c++) { 
      if(el.get(c).getColumnD().isEmpty()) { 
      el.remove(c); 
      } 
     } 
    break; 
    // … 

} 

私は戻ってファイルに書き込む時点でそれを試してみましたが、nullポインタ例外を持っています。 私のミスはどこですか?私は間違って何をしていますか?

+0

'el.get(C).getColumnD()。のisEmpty())あなたが持っている場合は、'問題になります'ヌル '値。 'get(c)'が 'null'を返すかどうか調べることができます。 – AxelH

+1

[ArrayListまたはString Arrayからすべてのnull要素を削除する方法は?](http://stackoverflow.com/questions/4819635/how-to-remove-all-null-elements-from-a-arraylist-または文字列配列 – AxelH

+0

はい値がnull – Chris

答えて

1

isEmpty()はnull値をチェックしないことに注意してください。サイズ== 0かどうかだけをチェックします。 だから、null値をチェックするために、あなたが条件getColumnD(上確認する必要があります)!=もちろんヌル

+0

私は行内のフィールドをヌルにしなければなりません、最初のものは削除されます2番目は表示されます – Chris

2
private Arraylist<ExcelReader> el; 

private void doSomething() { 

switch (chooseColumn) { 

// ArrayList is loaded 
//… 
case “D”: 
    // here use removeAll to remove all null object 
    el.removeAll(Collections.singleton(null)); 
    for (int c = 0; c <= el.size(); c++) { 
     if(el.get(c).getColumnD().isEmpty()) { 
     el.remove(c); 
     } 
    } 
break; 
// … 

} 
+1

これは複製私は投稿した、あなたは少なくとも答えのソースを追加することができます。 Plagiatはソースといくつかの改善なしでここで受け入れられません。また、説明を追加するのを忘れてしまった。 – AxelH

+0

今すぐjava.lang.reflect.InvocationTargetExceptionを取得します – Chris

+0

例外スタックトレースを共有してください –

関連する問題