How to remove duplicate object from ArrayList, but only if one specific value from object repeats with another object?
For example: I have class named Person with fields:
private String city;
private String firstName;
private String lastName;
private Long magicNumber;
I want to remove "older" Person with same "magicNumber" as the new One and keep him in ArrayList.
Using streams :
Collection<Person> filterd = persons.stream()
.collect(Collectors.toMap(
Person::getMagicNumber, p -> p, (p1, p2) -> p2))
.values();
Well, assuming you have overriden public boolean equals(Object object)
in your class in order to compare your magicNumber field:
https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#equals(java.lang.Object)
List<Person> persons = new ArrayList<>();
public void addToList(Person person) {
if(persons.contains(person)) {
persons.set(persons.indexOf(person), person);
} else {
persons.add(person);
}
}
public void addPerson(Person p) {
list.removeIf(o -> o.magicNumber.equals(p.magicNumber));
list.add(p);
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.