HashMap intermediateIdMap = new HashMap(d_idMap.size());
int linkCounter = 0;
for (Iterator it = d_idMap.entrySet().iterator(); it.hasNext(); )
{
Map.Entry me = ((Map.Entry) it.next());
long oldId = (Long) me.getKey();
MapObject mo = d_mc.findMapObject(oldId);
if (mo != null && !isMetaDataType(mo)
&& (IdSpace.isTransient(mo.id()) || d_updateAllIds
|| isNegativeIdUpdate(mo.id())))
{
int transientId = d_idGenerator.getNewId();
第一次执行时,我需要获得第一个transientId及其设置的Id以及最后一个Id,即MIN_TRANSIENT和MAX_TRANSIENT
我尝试将数据结构更改为LinkedHashMap,这会给我第一个和最后一个元素,但我想老年人不要我改变ds,你们帮我找另一种方式
public synchronized int getNewId()
{
// Contract.precondition("Within range", d_currentId <= d_range);
// CMSDL-3988 - recycle/reset the currentId once max reached
if(d_currentId>d_range)
d_currentId=MIN_TRANSIENT;
return d_currentId++;
}
答案 0 :(得分:0)
如果您因某种原因需要更改,则应该允许您进行更改。
否则,您需要一些代码周围的结构,例如
boolean firstValueSeen = false;
int firstValue = -1;
for (…) {
…
int transientId = d_idGenerator.getNewId();
firstValueSeen = true;
firstValue = transientId