import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
public class Main {
List<NotificationCnavOP> notificationCnavOPList = new ArrayList<>(
new NotificationCnavOP(1, "01/01/2000", 1),
new NotificationCnavOP(2, "01/01/2001", 2),
new NotificationCnavOP(2, "01/01/2002", 3),
new NotificationCnavOP(2, "01/01/2001", 2)));
List<NotificationCnavOP> result =
notificationCnavOPList
.stream()
.
sorted(Comparator.
comparing(NotificationCnavOP
::getId
) .thenComparing(e -> LocalDate.parse(e.getDate(), DateTimeFormatter.ofPattern("dd/MM/yyyy")))
.thenComparing(NotificationCnavOP::getCxalap))
.collect(Collectors.toMap(NotificationCnavOP::getId, Function.identity(), (e1, e2) -> e1))
.values()
.stream()
.collect(Collectors.toList());
}
}
class NotificationCnavOP {
private int id;
private int cxalap;
public NotificationCnavOP
(int id,
String date,
int cxalap
) { this.id = id;
this.date = date;
this.cxalap = cxalap;
}
public int getId() {
return id;
}
return date;
}
public int getCxalap() {
return cxalap;
}
@Override
return "[" + id + ", " + date + ", " + cxalap + "]";
}
}
aW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGU7CmltcG9ydCBqYXZhLnRpbWUuZm9ybWF0LkRhdGVUaW1lRm9ybWF0dGVyOwppbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CmltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKaW1wb3J0IGphdmEudXRpbC5MaXN0OwppbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkZ1bmN0aW9uOwppbXBvcnQgamF2YS51dGlsLnN0cmVhbS5Db2xsZWN0b3JzOwoKcHVibGljIGNsYXNzIE1haW4gewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CgkJTGlzdDxOb3RpZmljYXRpb25DbmF2T1A+IG5vdGlmaWNhdGlvbkNuYXZPUExpc3QgPSBuZXcgQXJyYXlMaXN0PD4oCgkJCQlBcnJheXMuYXNMaXN0KAoJCQkJCQluZXcgTm90aWZpY2F0aW9uQ25hdk9QKDEsICIwMS8wMS8yMDAwIiwgMSksIAoJCQkJCQluZXcgTm90aWZpY2F0aW9uQ25hdk9QKDIsICIwMS8wMS8yMDAxIiwgMiksCgkJCQkJCW5ldyBOb3RpZmljYXRpb25DbmF2T1AoMiwgIjAxLzAxLzIwMDIiLCAzKSwgCgkJCQkJCW5ldyBOb3RpZmljYXRpb25DbmF2T1AoMiwgIjAxLzAxLzIwMDEiLCAyKSkpOwoKCQlMaXN0PE5vdGlmaWNhdGlvbkNuYXZPUD4gcmVzdWx0ID0gCgkJCQlub3RpZmljYXRpb25DbmF2T1BMaXN0CgkJCQkuc3RyZWFtKCkKCQkJCS5zb3J0ZWQoQ29tcGFyYXRvci5jb21wYXJpbmcoTm90aWZpY2F0aW9uQ25hdk9QOjpnZXRJZCkKCQkJCQkJLnRoZW5Db21wYXJpbmcoZSAtPiBMb2NhbERhdGUucGFyc2UoZS5nZXREYXRlKCksIERhdGVUaW1lRm9ybWF0dGVyLm9mUGF0dGVybigiZGQvTU0veXl5eSIpKSkKCQkJCQkJLnRoZW5Db21wYXJpbmcoTm90aWZpY2F0aW9uQ25hdk9QOjpnZXRDeGFsYXApKQoJCQkJLmNvbGxlY3QoQ29sbGVjdG9ycy50b01hcChOb3RpZmljYXRpb25DbmF2T1A6OmdldElkLCBGdW5jdGlvbi5pZGVudGl0eSgpLCAoZTEsIGUyKSAtPiBlMSkpCgkJCQkudmFsdWVzKCkKCQkJCS5zdHJlYW0oKQoJCQkJLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CgoJCVN5c3RlbS5vdXQucHJpbnRsbihyZXN1bHQpOwoJfQp9CgpjbGFzcyBOb3RpZmljYXRpb25DbmF2T1AgewoJcHJpdmF0ZSBpbnQgaWQ7Cglwcml2YXRlIFN0cmluZyBkYXRlOwoJcHJpdmF0ZSBpbnQgY3hhbGFwOwoKCXB1YmxpYyBOb3RpZmljYXRpb25DbmF2T1AoaW50IGlkLCBTdHJpbmcgZGF0ZSwgaW50IGN4YWxhcCkgewoJCXRoaXMuaWQgPSBpZDsKCQl0aGlzLmRhdGUgPSBkYXRlOwoJCXRoaXMuY3hhbGFwID0gY3hhbGFwOwoJfQoKCXB1YmxpYyBpbnQgZ2V0SWQoKSB7CgkJcmV0dXJuIGlkOwoJfQoKCXB1YmxpYyBTdHJpbmcgZ2V0RGF0ZSgpIHsKCQlyZXR1cm4gZGF0ZTsKCX0KCglwdWJsaWMgaW50IGdldEN4YWxhcCgpIHsKCQlyZXR1cm4gY3hhbGFwOwoJfQoKCUBPdmVycmlkZQoJcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKCQlyZXR1cm4gIlsiICsgaWQgKyAiLCAiICsgZGF0ZSArICIsICIgKyBjeGFsYXAgKyAiXSI7Cgl9Cn0=