簡體   English   中英

在遍歷arraylist時刪除空值

[英]To remove null values while traversing arraylist

我正在嘗試使用此代碼替換arraylist中的空值。 我在xml文件的標記中獲取了空值。 該標簽中的值來自arraylist。 我想從標記中刪除null,而不要放置任何內容。 我的代碼是這樣的:

    for(String s:a.getList){
here I setting values in tag by create tag and than appending child nodess using DOM parser.
}

其中a =包含列表的對象

輸出是這樣的:

    <value>1</value>
<value>2</value>
<value>null</value>
<value>3</value>
<value>4</value>
<value>null</null>

。等等

預期產量:

    <value>1</value>
<value>2</value>
<value/>
<value>3</value>
<value>4</value>
<value/>

null應該被刪除,並且標簽應該看起來像這樣

我正在嘗試的代碼是:

  for(String s:a.list){
if(s.equals("null")){
s.replace("null","");
my code;

}

總是會得到空指針異常,並且不知道這是否將運行什么輸出。 請幫忙..

您不更新列表,而是創建新的String實例,因為String是不可變的。 如果當前值為"null"則只需設置所需的值

for(int i = 0; i < list.size(); ++i){
     if("null".equals(list.get(i)){
         list.set(i, "");
     }
}

條件不會因null值而失敗,但是如果要替換為null值,則需要添加條件,因為目前,它將僅更新"null"

如果要同時刪除,使用數組列表的最佳方法是從最后到第一進行迭代。

for (int i = list.size()-1; i >= 0; i--) {
        if ("null".equalsIgnoreCase(list.get(i))) {
            list.remove(i);
        }
    }

“ null” .equalsIgnoreCase(list.get(i))將避免空指針異常

用於去除和印刷價值

for (String str  :  abc) {
        if ("null".equalsIgnoreCase(str)) {
            System.out.println("<value/>");
        } else {
            System.out.println("<value>"+str+"</value>");
        }
    }

更清楚一點

public static void main(String... args) {
    ArrayList<String> a = new ArrayList<String>();
    a.add("one");
    a.add(null);
    a.add("two");
    a.removeAll(Collections.singleton(null));
    for(String value : a) {
        System.out.println(value);
    }
}

輸出量

one
two

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM