在遍历arraylist

时间:2017-09-01 05:48:31

标签: java

我正在尝试使用此代码替换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;

}

始终获取空指针异常,并且不知道这是否会运行将输出的内容。 请帮忙..

3 个答案:

答案 0 :(得分:1)

您没有更新列表,而是创建新的String实例,因为String是不可变的。如果当前值为"null"

,只需设置所需的值即可
for(int i = 0; i < list.size(); ++i){
     if("null".equals(list.get(i)){
         list.set(i, "");
     }
}

null值的条件不会失败,但是如果要替换它们,则需要添加条件,因为目前它只会更新"null"

答案 1 :(得分:1)

如果要同时删除,使用数组列表的最佳方法是从最后一个到第一个迭代。

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>");
        }
    }

答案 2 :(得分:0)

使其更清晰

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