如何从通用列表中删除特定行

时间:2015-06-29 13:01:09

标签: java

我有这种方法。我想从列表中删除包含0或null值的行,其中列表中的值如下所示

rollno name age city street zipcode
1       abc  0  pqr   xyz   145202

由于年龄值为零,我们必须删除它。任何身体都可以帮助我吗我是java的新手?

在下面的代码中我删除了行,我再次打印列表

public void validateData(List<Student> studentList) throws InsufficientDataException {
    System.out.println(String.valueOf(list));
    for (Iterator < Student > iter = list.listIterator(); iter.hasNext();) {
        Student a = iter.next();
        if (list.contains("null")) {
            iter.remove();
        }
    }
    System.out.println(list);
}

1 个答案:

答案 0 :(得分:0)

假设Student类的字段是公共的,并且您的列表可以包含空值。

public void validateData (List<Student> studentList) throws InsufficientDataException {
        for (Iterator<Student> iter = list.listIterator(); iter.hasNext();) {
            Student a = iter.next();
            if (a == null) { // Check if a is null
                iter.remove(); // remove it because it is null

            } else {// a is not null
                if (a.age == 0) { // check if age is 0
                    iter.remove(); //Remove it because age is 0
                }
            }
        }
    }

从迭代器获得的变量“a”是每次迭代时获得的列表元素。您需要检查变量是否为null或者是否包含年龄为0的学生,而不是检查该列表是否包含null。

 if (list.contains("null")) { //This is wrong.
      iter.remove();
 }

最后,我强烈建议您阅读Lists上的Javadocs

https://docs.oracle.com/javase/8/docs/api/java/util/List.html