[英]Remove null values from Arraylist in java using normal old method
I am trying to remove null and empty value from a Arraylist, but the following code does not work, when i tried to use if(null,=a) if throwing the Nullpointer Exception, but other way works then if(a==null).我正在尝试从 Arraylist 中删除 null 和空值,但是当我尝试使用 if(null,=a) 如果抛出 Nullpointer 异常时,以下代码不起作用,但其他方法则有效)。 Program 1 gives error but program 2 works.程序 1 出错,但程序 2 有效。
Can Someone Please explain the reason谁能解释一下原因
public class RemoveNull {
public static void main(String[] args) {
List<String> arr=new ArrayList<String>();
arr.add("a");
arr.add("a");
arr.add("a");
arr.add("a");
arr.add(null);
arr.add("a");
arr.add("a");
arr.add(null);
List<String> arr1=new ArrayList<String>();
System.out.println(arr);
for(String a:arr)
{
System.out.println(a);
if(null!=a || !a.equals(""))
{
arr1.add(a);
//arr.remove(a);
}
System.out.println(arr1);
}
System.out.println(arr);
} }
results结果
Exception in thread "main" java.lang.NullPointerException at RemoveNull.main(RemoveNull.java:26) RemoveNull.main 处的线程“主”java.lang.NullPointerException 异常(RemoveNull.java:26)
public class RemoveNull {
public static void main(String[] args) {
ArrayList<String> arr=new ArrayList<String>();
arr.add("a");
arr.add("a");
arr.add("a");
arr.add("a");
arr.add(null);
arr.add("a");
arr.add("a");
arr.add("");
arr.add(null);
arr.add("");
List<String> arr1=new ArrayList<String>();
System.out.println(arr);
for(String a:arr)
{
System.out.println(a);
if(null==a || a.equals(""))
{
}
else
{
arr1.add(a);
//arr.remove(a);
}
System.out.println(arr1);
}
System.out.println(arr);
}
}
results结果
[a, a, a, a, null, a, a, null, null] [a, a, a, a, a, a] [a,a,a,a,null,a,a,null,空] [a,a,a,a,a,a]
Your problem is here:你的问题在这里:
if(null!=a || !a.equals(""))
You should write你应该写
if(null!=a && !a.equals(""))
You should be using a ListIterator
if you want to also possibly remove elements while iterating your list:如果您还想在迭代列表时删除元素,则应该使用ListIterator
:
ListIterator<String> its = arr.listIterator();
while (itr.hasNext()) {
String next = itr.next();
if (next == null || "".equals(next)) {
itr.remove();
}
}
Note that you don't need to make a separate updated copy of your list.请注意,您不需要单独制作列表的更新副本。 Instead, you may just iterate the one you already have and remove the null/empty elements.相反,您可以只迭代已有的元素并删除 null/empty 元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.