我正在尝试使用此代码替换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;
}
始终获取空指针异常,并且不知道这是否会运行将输出的内容。 请帮忙..
答案 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