java如何检查列表中的数据是否包含0或空值并删除该数据
下面是我迄今为止创建的代码。
也就是说,下面的程序正在读取该文件,如果给定文件中的一个字段为空,那么它将为整数值打印0
,为字符串值打印null
// Override all the methods of the DataManager Interface
public class StudentDataManager implements DataManager {
List<Student> list = new ArrayList<Student>();
@SuppressWarnings("null")
@Override
public List<Student> populateData(String fileName) {
Scanner s = null;
String nameAndRollNumber = "";
String numbers[] = null;
Integer roll1 = 0;
String roll = null;
String name = null;
String age = null;
String zip = null;
String street = null;
String city = null;
Integer age1 = 0;
String cpmletedata = null;
try {
s = new Scanner(new File("F:\\...\\StudentDetails.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
while (s.hasNext()) {
nameAndRollNumber = s.nextLine();
String[] nameAndRollNumbers = nameAndRollNumber.split(",");
try {
roll = nameAndRollNumbers[0];
roll1 = Integer.valueOf(roll);
cpmletedata = " " + roll;
name = nameAndRollNumbers[1];
if (nameAndRollNumbers[1].equals("")) {
cpmletedata = cpmletedata + " null ";
} else {
cpmletedata = cpmletedata + " " + name;
}
age = nameAndRollNumbers[2];
if (nameAndRollNumbers[2].equals("")) {
cpmletedata = cpmletedata + " 0 ";
} else {
age1 = Integer.valueOf(age);
cpmletedata = cpmletedata + " " + age1;
}
street = nameAndRollNumbers[3];
if (nameAndRollNumbers[3].equals("")) {
cpmletedata = cpmletedata + " null ";
} else {
cpmletedata = cpmletedata + " " + street;
}
city = nameAndRollNumbers[4];
if (nameAndRollNumbers[4].equals("")) {
// System.out.print("null");
cpmletedata = cpmletedata + " null ";
} else {
// System.out.print(city + " ");
cpmletedata = cpmletedata + " " + city;
}
zip = nameAndRollNumbers[5];
if (nameAndRollNumbers[5].equals(" ")) {
cpmletedata = cpmletedata + " null ";
} else {
cpmletedata = cpmletedata + " " + zip;
}
Address a1 = new Address(street, city, zip);
cpmletedata = cpmletedata + " ";
System.out.println(cpmletedata);
list.add(new Student(roll1, name, age1, a1));
}
catch (Exception e) {
e.printStackTrace();
}
}
s.close();
return list;
}
}
现在我有这么多的代码,它给出了以下输出:
1 Arjun 12 GhandiNagar Pune 411020
2 Deep 8 M.G.Road Mumbai 411032
3 Deep 3 F.C.Road Pune 411032
4 Neha 10 Camp Pune 411023
5 Seema 0 null null null
6 Bani 6 Camp Mumbai 411045
7 Deepali 3 M.G.Road Mumbai 411032
8 Neha 0 null Mumbai null
9 Meena 9 Nariman Point Mumbai 411045
10 Chaitali 3 M.G.Road Mumbai 411032
11 Bani 6 Camp Mumbai 411045
12 Deepali 3 M.G.Road Mumbai 411032
13 Neha 10 F.C. Road Pune 411023
14 Deep 3 F.C.Road Pune 411032
15 Beena 6 Camp Mumbai 411045
另一个功能是验证数据。也就是说,如果记录包含0
或null
,我们必须使其无效,也就是说,我们必须删除该特定行并将异常作为InsufficientDataException
抛出。我创造了这个例外,但我不明白。如何再次读取该列表并检查行是否包含0
或null
并验证它
# 1 楼答案
如果修改当前学生列表,它将抛出一个异常, 因此,创建另一个学生列表,条件是只选择所需的 参赛将是一个很好的方法,如下所示:
下面是您想要的输出(过滤):
# 2 楼答案
您可以创建一个validate():boolean方法,该方法读取数组的每个条目,并测试是否存在0或null值。如果检测到这种情况,则返回false,否则在方法末尾返回true
# 3 楼答案
我这边的一个可能的解决方案和建议是使用来自
org.apache.commons
的CollectionUtils
:如果
select
返回false
,元素将从列表中删除。 调用filter
后,可以将列表的旧大小与新大小进行比较。如果当前大小和旧大小之间存在差异,则某些元素已被删除,您可以抛出exception