【发布时间】:2017-08-31 11:54:48
【问题描述】:
我有一个代码可以选择性地将数据添加到如下地图中,
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("Johnny", "Depp", 18),
new Person("Jennifer", null, 30),
new Person("Angelina", null, 23),
new Person("Angelina", "Garlic", 38),
new Person("Angelina", "Jolie", 40),
);
Map<String, Person> map = new HashMap<>();
for (Person person:
people) {
Person temp = map.get(person.getFirstName());
if(temp == null || temp.getLastName() == null)
map.put(person.getFirstName(), person);
}
for (Map.Entry mapper:
map.entrySet()) {
Person temp = (Person) mapper.getValue();
System.out.println(temp.getFirstName());
System.out.println(temp.getLastName());
System.out.println();
}
}
Person.java 包含以下内容:
public class Person {
String firstName;
String lastName;
int age;
public Person(String firstName, String lastName, int age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
现在,我需要检查以下条件, 1) 是地图有多条同名的记录;如果记录的姓氏为空,则应将此记录添加到地图中。 2) 如果地图中只有一个人的名字记录;如果该记录的姓氏为空,则它有资格添加到地图中。
所以我目前的解决方案得到的输出是,
约翰尼 德普
詹妮弗 空
安吉丽娜 大蒜
我需要的输出应该在哪里,
约翰尼 德普
詹妮弗 空
安吉丽娜 大蒜
安吉丽娜 朱莉
注意:我正在使用 Java 7(不,Java 8 不是一个选项)
【问题讨论】:
-
我想你的意思是,如果有多个记录的名字相同而一个姓氏为空,那么它应该不添加吗?
-
我不明白这个问题的标题。它与根据条件从列表中删除元素有什么关系?
标签: java algorithm arraylist hashmap filtering