/** * Returns a hash code for this map. * * The hash code of a map is computed by summing the hash codes of its entries. * * @return a hash code for this map. */ @Override public int hashCode() { int h = 0, n = size(); final ObjectIterator<Reference2ReferenceMap.Entry<K, V>> i = Reference2ReferenceMaps.fastIterator(this); while (n-- != 0) h += i.next().hashCode(); return h; } @Override
@Override public String toString() { final StringBuilder s = new StringBuilder(); final ObjectIterator<Reference2ReferenceMap.Entry<K, V>> i = Reference2ReferenceMaps.fastIterator(this); int n = size(); Reference2ReferenceMap.Entry<K, V> e; boolean first = true; s.append("{"); while (n-- != 0) { if (first) first = false; else s.append(", "); e = i.next(); if (this == e.getKey()) s.append("(this map)"); else s.append(String.valueOf(e.getKey())); s.append("=>"); if (this == e.getValue()) s.append("(this map)"); else s.append(String.valueOf(e.getValue())); } s.append("}"); return s.toString(); } }
/** {@inheritDoc} */ @SuppressWarnings({"unchecked", "deprecation"}) @Override public void putAll(final Map<? extends K, ? extends V> m) { if (m instanceof Reference2ReferenceMap) { ObjectIterator<Reference2ReferenceMap.Entry<K, V>> i = Reference2ReferenceMaps .fastIterator((Reference2ReferenceMap<K, V>) m); while (i.hasNext()) { final Reference2ReferenceMap.Entry<? extends K, ? extends V> e = i.next(); put(e.getKey(), e.getValue()); } } else { int n = m.size(); final Iterator<? extends Map.Entry<? extends K, ? extends V>> i = m.entrySet().iterator(); Map.Entry<? extends K, ? extends V> e; while (n-- != 0) { e = i.next(); put(e.getKey(), e.getValue()); } } } /**