/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.time.LocalDate;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
MyObject object0 = new MyObject(null, "2018-12-01");
MyObject object1 = new MyObject(1, "2018-12-02");
MyObject object2 = new MyObject(5, "2018-12-03");
MyObject object3 = new MyObject(null, "2018-12-04");
MyObject object4 = new MyObject(null, "2018-12-05");
MyObject object5 = new MyObject(2, "2018-12-06");
MyObject object6 = new MyObject(null, "2018-12-07");
List
<MyObject
> list
= new ArrayList
<>(Arrays.
asList(object0, object1, object2, object3, object4, object5, object6
)); MyObject[] res = new MyObject[list.size()];
for (Iterator<MyObject> ite = list.iterator(); ite.hasNext(); ) {
MyObject obj = ite.next();
if (obj.getPriority() != null) {
res[obj.getPriority() - 1] = obj;
ite.remove();
}
}
list.
sort(Comparator.
comparing(MyObject
::getCreatedAt
).
reversed());
int indicList = 0;
for (int i = 0; i < res.length; i++) {
if (res[i] == null) {
res[i] = list.get(indicList++);
}
}
for (MyObject re : res) {
}
}
}
class MyObject {
private LocalDate createdAt;
this.priority = priority;
this.createdAt = LocalDate.parse(createdAt);
}
return priority;
}
LocalDate getCreatedAt() {
return createdAt;
}
@Override
return "MyObject{" +
"priority=" + priority +
", createdAt=" + createdAt +
'}';
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnRpbWUuTG9jYWxEYXRlOwoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCiAgICAgICAgTXlPYmplY3Qgb2JqZWN0MCA9IG5ldyBNeU9iamVjdChudWxsLCAiMjAxOC0xMi0wMSIpOwogICAgICAgIE15T2JqZWN0IG9iamVjdDEgPSBuZXcgTXlPYmplY3QoMSwgIjIwMTgtMTItMDIiKTsKICAgICAgICBNeU9iamVjdCBvYmplY3QyID0gbmV3IE15T2JqZWN0KDUsICIyMDE4LTEyLTAzIik7CiAgICAgICAgTXlPYmplY3Qgb2JqZWN0MyA9IG5ldyBNeU9iamVjdChudWxsLCAiMjAxOC0xMi0wNCIpOwogICAgICAgIE15T2JqZWN0IG9iamVjdDQgPSBuZXcgTXlPYmplY3QobnVsbCwgIjIwMTgtMTItMDUiKTsKICAgICAgICBNeU9iamVjdCBvYmplY3Q1ID0gbmV3IE15T2JqZWN0KDIsICIyMDE4LTEyLTA2Iik7CiAgICAgICAgTXlPYmplY3Qgb2JqZWN0NiA9IG5ldyBNeU9iamVjdChudWxsLCAiMjAxOC0xMi0wNyIpOwoKICAgICAgICBMaXN0PE15T2JqZWN0PiBsaXN0ID0gbmV3IEFycmF5TGlzdDw+KEFycmF5cy5hc0xpc3Qob2JqZWN0MCwgb2JqZWN0MSwgb2JqZWN0Miwgb2JqZWN0Mywgb2JqZWN0NCwgb2JqZWN0NSwgb2JqZWN0NikpOwogICAgICAgIE15T2JqZWN0W10gcmVzID0gbmV3IE15T2JqZWN0W2xpc3Quc2l6ZSgpXTsKCiAgICAgICAgZm9yIChJdGVyYXRvcjxNeU9iamVjdD4gaXRlID0gbGlzdC5pdGVyYXRvcigpOyBpdGUuaGFzTmV4dCgpOyApIHsKICAgICAgICAgICAgTXlPYmplY3Qgb2JqID0gaXRlLm5leHQoKTsKICAgICAgICAgICAgaWYgKG9iai5nZXRQcmlvcml0eSgpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHJlc1tvYmouZ2V0UHJpb3JpdHkoKSAtIDFdID0gb2JqOwogICAgICAgICAgICAgICAgaXRlLnJlbW92ZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBsaXN0LnNvcnQoQ29tcGFyYXRvci5jb21wYXJpbmcoTXlPYmplY3Q6OmdldENyZWF0ZWRBdCkucmV2ZXJzZWQoKSk7CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOwogICAgICAgIAogICAgICAgIGludCBpbmRpY0xpc3QgPSAwOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChyZXNbaV0gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmVzW2ldID0gbGlzdC5nZXQoaW5kaWNMaXN0KyspOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3IgKE15T2JqZWN0IHJlIDogcmVzKSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihyZSk7CiAgICAgICAgfQoKCX0KfQoKCmNsYXNzIE15T2JqZWN0IHsKCiAgICBwcml2YXRlIEludGVnZXIgcHJpb3JpdHk7CgogICAgcHJpdmF0ZSBMb2NhbERhdGUgY3JlYXRlZEF0OwoKICAgIE15T2JqZWN0KEludGVnZXIgcHJpb3JpdHksIFN0cmluZyBjcmVhdGVkQXQpIHsKICAgICAgICB0aGlzLnByaW9yaXR5ID0gcHJpb3JpdHk7CiAgICAgICAgdGhpcy5jcmVhdGVkQXQgPSBMb2NhbERhdGUucGFyc2UoY3JlYXRlZEF0KTsKICAgIH0KCiAgICBJbnRlZ2VyIGdldFByaW9yaXR5KCkgewogICAgICAgIHJldHVybiBwcmlvcml0eTsKICAgIH0KCiAgICBMb2NhbERhdGUgZ2V0Q3JlYXRlZEF0KCkgewogICAgICAgIHJldHVybiBjcmVhdGVkQXQ7CiAgICB9CgogICAgQE92ZXJyaWRlCiAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewogICAgICAgIHJldHVybiAiTXlPYmplY3R7IiArCiAgICAgICAgICAgICAgICAicHJpb3JpdHk9IiArIHByaW9yaXR5ICsKICAgICAgICAgICAgICAgICIsIGNyZWF0ZWRBdD0iICsgY3JlYXRlZEF0ICsKICAgICAgICAgICAgICAgICd9JzsKICAgIH0KfQo=
MyObject{priority=1, createdAt=2018-12-02}
MyObject{priority=2, createdAt=2018-12-06}
MyObject{priority=null, createdAt=2018-12-07}
MyObject{priority=null, createdAt=2018-12-05}
MyObject{priority=5, createdAt=2018-12-03}
MyObject{priority=null, createdAt=2018-12-04}
MyObject{priority=null, createdAt=2018-12-01}