我需要我的getNextId()方法用于三个不同的地图:
private final Map<Integer, Track> tracks;
private final Map<Integer, Train> trains;
private final Map<Integer, Coach> coaches;
到目前为止,我有三种不同的方法,但这显然是不必要的。如果只需要上述通配符,是否有比使用通配符?
更好的方法?
public int getNextId(Map<Integer, ?> givenMap) {
int id = 1;
for (int key : givenMap.keySet()) {
if (key > id) break;
id = key + 1;
}
return id;
}
getNextId()方法基本上获得最小的可用ID> = 1。如果存在火车ID 1、2、3、4,并且用户删除了ID为2的火车,则下一个添加的火车将获得ID 2。
编写通过调用三个Track
,Train
和Coach
继承的接口或类(我们称其为MyBase)。>
然后修改您的方法:
public int getNextId(Map<Integer, ? extends MyBase> givenMap) {
...
}