import java.util.*;
import java.util.stream.Collectors;
public class Main {
int i = 0;
static class Item<T extends Comparable<T>> implements Comparable<Item<T>> {
long id;
T sortingKey;
public Item(T key) {
this.sortingKey = key;
}
@Override
public int compareTo(Item<T> o) {
return sortingKey.compareTo(o.sortingKey);
}
}
public List<Long> getSortedIds(int itemType) {
if (itemType == 1) {
List
<Item
<Long
>> items
= getItems
(1,
Long.
class); return items.stream().map(it -> it.id).collect(Collectors.toList());
} else if (itemType == 2) {
List
<Item
<Date
>> items
= getItems
(2,
Date.
class); return items.stream().map(it -> it.id).collect(Collectors.toList());
}
//...
return null;
}
public <T extends Comparable<T>> List<Item<T>> getItems(int itemType, Class<T> cl) {
List<Item<T>> items = new ArrayList<>();
Object valueFromDb
= getFakeValueFromDb
(itemType
); T casted = (T) valueFromDb;
items.add(new Item<>(casted));
valueFromDb = getFakeValueFromDb(itemType);
casted = (T) valueFromDb;
items.add(new Item<>(casted));
return items;
}
private Object getFakeValueFromDb
(int itemType
) { if (itemType == 1) {
return i++;
} else if (itemType == 2) {
}
return null;
}
public static void main
(String[] args
) { new Main().getSortedIds(1);
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS51dGlsLnN0cmVhbS5Db2xsZWN0b3JzOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgCiAgICBpbnQgaSA9IDA7CgogICAgc3RhdGljIGNsYXNzIEl0ZW08VCBleHRlbmRzIENvbXBhcmFibGU8VD4+IGltcGxlbWVudHMgQ29tcGFyYWJsZTxJdGVtPFQ+PiB7CiAgICAgICAgbG9uZyBpZDsKICAgICAgICBUIHNvcnRpbmdLZXk7CgogICAgICAgIHB1YmxpYyBJdGVtKFQga2V5KSB7CiAgICAgICAgICAgIHRoaXMuc29ydGluZ0tleSA9IGtleTsKICAgICAgICB9CgogICAgICAgIEBPdmVycmlkZQogICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZVRvKEl0ZW08VD4gbykgewogICAgICAgICAgICByZXR1cm4gc29ydGluZ0tleS5jb21wYXJlVG8oby5zb3J0aW5nS2V5KTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIExpc3Q8TG9uZz4gZ2V0U29ydGVkSWRzKGludCBpdGVtVHlwZSkgewogICAgICAgIGlmIChpdGVtVHlwZSA9PSAxKSB7CiAgICAgICAgICAgIExpc3Q8SXRlbTxMb25nPj4gaXRlbXMgPSBnZXRJdGVtcygxLCBMb25nLmNsYXNzKTsKICAgICAgICAgICAgQ29sbGVjdGlvbnMuc29ydChpdGVtcyk7CiAgICAgICAgICAgIHJldHVybiBpdGVtcy5zdHJlYW0oKS5tYXAoaXQgLT4gaXQuaWQpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CiAgICAgICAgfSBlbHNlIGlmIChpdGVtVHlwZSA9PSAyKSB7CiAgICAgICAgICAgIExpc3Q8SXRlbTxEYXRlPj4gaXRlbXMgPSBnZXRJdGVtcygyLCBEYXRlLmNsYXNzKTsKICAgICAgICAgICAgQ29sbGVjdGlvbnMuc29ydChpdGVtcyk7CiAgICAgICAgICAgIHJldHVybiBpdGVtcy5zdHJlYW0oKS5tYXAoaXQgLT4gaXQuaWQpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CiAgICAgICAgfQogICAgICAgIC8vLi4uCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgICAKICAgIAogICAgcHVibGljIDxUIGV4dGVuZHMgQ29tcGFyYWJsZTxUPj4gTGlzdDxJdGVtPFQ+PiBnZXRJdGVtcyhpbnQgaXRlbVR5cGUsIENsYXNzPFQ+IGNsKSB7CiAgICAgICAgTGlzdDxJdGVtPFQ+PiBpdGVtcyA9IG5ldyBBcnJheUxpc3Q8PigpOwoKICAgICAgICBPYmplY3QgdmFsdWVGcm9tRGIgPSBnZXRGYWtlVmFsdWVGcm9tRGIoaXRlbVR5cGUpOwogICAgICAgIFQgY2FzdGVkID0gKFQpIHZhbHVlRnJvbURiOwogICAgICAgIGl0ZW1zLmFkZChuZXcgSXRlbTw+KGNhc3RlZCkpOwoKICAgICAgICB2YWx1ZUZyb21EYiA9IGdldEZha2VWYWx1ZUZyb21EYihpdGVtVHlwZSk7CiAgICAgICAgY2FzdGVkID0gKFQpIHZhbHVlRnJvbURiOwogICAgICAgIGl0ZW1zLmFkZChuZXcgSXRlbTw+KGNhc3RlZCkpOwogICAgICAgIAogICAgICAgIHJldHVybiBpdGVtczsKICAgIH0KCiAgICBwcml2YXRlIE9iamVjdCBnZXRGYWtlVmFsdWVGcm9tRGIoaW50IGl0ZW1UeXBlKSB7CiAgICAgICAgaWYgKGl0ZW1UeXBlID09IDEpIHsKICAgICAgICAgICAgcmV0dXJuIGkrKzsKICAgICAgICB9IGVsc2UgaWYgKGl0ZW1UeXBlID09IDIpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBuZXcgTWFpbigpLmdldFNvcnRlZElkcygxKTsgCiAgICB9Cn0K