X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=third-party%2Ftriemap%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Ftriemap%2FTrieMap.java;h=a7a92ee1bc1687ac1a6209dcb8284f1908f76408;hb=422344ce9059492bebc277edf22189cd3d4ec178;hp=b93fa4a367fea9b9043e0a4adcbb790a176e2c5b;hpb=d57d376dcb0d30ff28fb034aec0fb5db2100429d;p=yangtools.git diff --git a/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/TrieMap.java b/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/TrieMap.java index b93fa4a367..a7a92ee1bc 100644 --- a/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/TrieMap.java +++ b/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/TrieMap.java @@ -22,7 +22,6 @@ import com.google.common.annotations.Beta; import java.io.ObjectStreamException; import java.io.Serializable; import java.util.AbstractMap; -import java.util.Iterator; import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentMap; @@ -45,6 +44,7 @@ public abstract class TrieMap extends AbstractMap implements Concurr private final Equivalence equiv; private AbstractEntrySet entrySet; + private AbstractKeySet keySet; TrieMap(final Equivalence equiv) { this.equiv = equiv; @@ -100,6 +100,15 @@ public abstract class TrieMap extends AbstractMap implements Concurr return ret; } + @Override + public final Set keySet() { + AbstractKeySet ret = keySet; + if (ret == null) { + keySet = ret = createKeySet(); + } + return ret; + } + @Override public final V get(final Object key) { @SuppressWarnings("unchecked") @@ -135,6 +144,8 @@ public abstract class TrieMap extends AbstractMap implements Concurr abstract AbstractEntrySet createEntrySet(); + abstract AbstractKeySet createKeySet(); + abstract boolean isReadOnly(); abstract INode RDCSS_READ_ROOT(boolean abort); @@ -149,7 +160,7 @@ public abstract class TrieMap extends AbstractMap implements Concurr * * @return */ - abstract Iterator> iterator(); + abstract AbstractIterator iterator(); /* internal methods provided for subclasses */ @@ -159,8 +170,8 @@ public abstract class TrieMap extends AbstractMap implements Concurr * * @return */ - final Iterator> immutableIterator() { - return new TrieMapReadOnlyIterator<>(0, immutableSnapshot()); + final ImmutableIterator immutableIterator() { + return new ImmutableIterator<>(immutableSnapshot()); } @SuppressWarnings("null")