import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static class Students {
int id;
public Students
(final int id,
final String name
) { this.id = id;
this.name = name;
}
public int getId() {
return this.id;
}
return this.name;
}
}
public static void main
(String[] args
) { List<Students> list1 = new ArrayList<>();
list1.add(new Students(1, "Josh"));
list1.add(new Students(2, "Jacob"));
list1.add(new Students(3, "Jane"));
List<Students> list2 = new ArrayList<>();
list2.add(new Students(1, "Josh"));
list2.add(new Students(4, "Jorge"));
final Set<Integer> ids = new HashSet<>();
final List
<Students
> unique
= Stream.
of(list1, list2
).
flatMap(List::stream
).
filter(s
-> ids.
add(s.
getId())) .collect(Collectors.toList());
unique.
forEach(s
-> System.
out.
println(s.
getId() + "-" + s.
getName())); }
}
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CmltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKaW1wb3J0IGphdmEudXRpbC5MaXN0OwppbXBvcnQgamF2YS51dGlsLlNldDsKaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uQ29sbGVjdG9yczsKaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uU3RyZWFtOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyBjbGFzcyBTdHVkZW50cyB7CiAgICAgICAgaW50IGlkOwogICAgICAgIFN0cmluZyBuYW1lOwoKICAgICAgICBwdWJsaWMgU3R1ZGVudHMoZmluYWwgaW50IGlkLCBmaW5hbCBTdHJpbmcgbmFtZSkgewogICAgICAgICAgICB0aGlzLmlkID0gaWQ7CiAgICAgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgaW50IGdldElkKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5pZDsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIExpc3Q8U3R1ZGVudHM+IGxpc3QxID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgbGlzdDEuYWRkKG5ldyBTdHVkZW50cygxLCAiSm9zaCIpKTsKICAgICAgICBsaXN0MS5hZGQobmV3IFN0dWRlbnRzKDIsICJKYWNvYiIpKTsKICAgICAgICBsaXN0MS5hZGQobmV3IFN0dWRlbnRzKDMsICJKYW5lIikpOwogICAgICAgIExpc3Q8U3R1ZGVudHM+IGxpc3QyID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgbGlzdDIuYWRkKG5ldyBTdHVkZW50cygxLCAiSm9zaCIpKTsKICAgICAgICBsaXN0Mi5hZGQobmV3IFN0dWRlbnRzKDQsICJKb3JnZSIpKTsKICAgICAgICBmaW5hbCBTZXQ8SW50ZWdlcj4gaWRzID0gbmV3IEhhc2hTZXQ8PigpOwogICAgICAgIGZpbmFsIExpc3Q8U3R1ZGVudHM+IHVuaXF1ZSA9IFN0cmVhbS5vZihsaXN0MSwgbGlzdDIpLmZsYXRNYXAoTGlzdDo6c3RyZWFtKS5maWx0ZXIocyAtPiBpZHMuYWRkKHMuZ2V0SWQoKSkpCiAgICAgICAgICAgICAgICAuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKTsKICAgICAgICB1bmlxdWUuZm9yRWFjaChzIC0+IFN5c3RlbS5vdXQucHJpbnRsbihzLmdldElkKCkgKyAiLSIgKyBzLmdldE5hbWUoKSkpOwogICAgfQp9