/** * Returns a {@code HashMap}, from a source java.util.Map. * * @param map A map * @param <K> The key type * @param <V> The value type * @return A new Map containing the given map */ public static <K, V> HashMap<K, V> ofAll(java.util.Map<? extends K, ? extends V> map) { Objects.requireNonNull(map, "map is null"); HashArrayMappedTrie<K, V> tree = HashArrayMappedTrie.empty(); for (java.util.Map.Entry<? extends K, ? extends V> entry : map.entrySet()) { tree = tree.put(entry.getKey(), entry.getValue()); } return wrap(tree); }
/** * Creates a HashMap of the given entries. * * @param entries Map entries * @param <K> The key type * @param <V> The value type * @return A new Map containing the given entries */ @SafeVarargs public static <K, V> HashMap<K, V> ofEntries(Tuple2<? extends K, ? extends V>... entries) { Objects.requireNonNull(entries, "entries is null"); HashArrayMappedTrie<K, V> trie = HashArrayMappedTrie.empty(); for (Tuple2<? extends K, ? extends V> entry : entries) { trie = trie.put(entry._1, entry._2); } return wrap(trie); }
/** * Creates a HashMap of the given entries. * * @param entries Map entries * @param <K> The key type * @param <V> The value type * @return A new Map containing the given entries */ @SafeVarargs public static <K, V> HashMap<K, V> ofEntries(java.util.Map.Entry<? extends K, ? extends V>... entries) { Objects.requireNonNull(entries, "entries is null"); HashArrayMappedTrie<K, V> trie = HashArrayMappedTrie.empty(); for (java.util.Map.Entry<? extends K, ? extends V> entry : entries) { trie = trie.put(entry.getKey(), entry.getValue()); } return wrap(trie); }
@Override public HashMap<K, V> retainAll(Iterable<? extends Tuple2<K, V>> elements) { Objects.requireNonNull(elements, "elements is null"); HashArrayMappedTrie<K, V> tree = HashArrayMappedTrie.empty(); for (Tuple2<K, V> entry : elements) { if (contains(entry)) { tree = tree.put(entry._1, entry._2); } } return wrap(tree); }
@Override public HashMap<K, V> remove(K key) { final HashArrayMappedTrie<K, V> result = trie.remove(key); return result.size() == trie.size() ? this : wrap(result); }
/** * Creates a HashMap of the given entries. * * @param entries Map entries * @param <K> The key type * @param <V> The value type * @return A new Map containing the given entries */ @SuppressWarnings("unchecked") public static <K, V> HashMap<K, V> ofEntries(Iterable<? extends Tuple2<? extends K, ? extends V>> entries) { Objects.requireNonNull(entries, "entries is null"); if (entries instanceof HashMap) { return (HashMap<K, V>) entries; } else { HashArrayMappedTrie<K, V> trie = HashArrayMappedTrie.empty(); for (Tuple2<? extends K, ? extends V> entry : entries) { trie = trie.put(entry._1, entry._2); } return trie.isEmpty() ? empty() : wrap(trie); } }
@Override public HashMap<K, V> removeAll(Iterable<? extends K> keys) { Objects.requireNonNull(keys, "keys is null"); HashArrayMappedTrie<K, V> result = trie; for (K key : keys) { result = result.remove(key); } if (result.isEmpty()) { return empty(); } else if (result.size() == trie.size()) { return this; } else { return wrap(result); } }
/** * Returns a {@code HashMap}, from a source java.util.Map. * * @param map A map * @param <K> The key type * @param <V> The value type * @return A new Map containing the given map */ public static <K, V> HashMap<K, V> ofAll(java.util.Map<? extends K, ? extends V> map) { Objects.requireNonNull(map, "map is null"); HashArrayMappedTrie<K, V> tree = HashArrayMappedTrie.empty(); for (java.util.Map.Entry<? extends K, ? extends V> entry : map.entrySet()) { tree = tree.put(entry.getKey(), entry.getValue()); } return wrap(tree); }
/** * Creates a HashMap of the given entries. * * @param entries Map entries * @param <K> The key type * @param <V> The value type * @return A new Map containing the given entries */ @SafeVarargs public static <K, V> HashMap<K, V> ofEntries(Tuple2<? extends K, ? extends V>... entries) { Objects.requireNonNull(entries, "entries is null"); HashArrayMappedTrie<K, V> trie = HashArrayMappedTrie.empty(); for (Tuple2<? extends K, ? extends V> entry : entries) { trie = trie.put(entry._1, entry._2); } return wrap(trie); }
/** * Creates a HashMap of the given entries. * * @param entries Map entries * @param <K> The key type * @param <V> The value type * @return A new Map containing the given entries */ @SafeVarargs public static <K, V> HashMap<K, V> ofEntries(java.util.Map.Entry<? extends K, ? extends V>... entries) { Objects.requireNonNull(entries, "entries is null"); HashArrayMappedTrie<K, V> trie = HashArrayMappedTrie.empty(); for (java.util.Map.Entry<? extends K, ? extends V> entry : entries) { trie = trie.put(entry.getKey(), entry.getValue()); } return wrap(trie); }
@Override public HashMap<K, V> retainAll(Iterable<? extends Tuple2<K, V>> elements) { Objects.requireNonNull(elements, "elements is null"); HashArrayMappedTrie<K, V> tree = HashArrayMappedTrie.empty(); for (Tuple2<K, V> entry : elements) { if (contains(entry)) { tree = tree.put(entry._1, entry._2); } } return wrap(tree); }
@Override public HashMap<K, V> remove(K key) { final HashArrayMappedTrie<K, V> result = trie.remove(key); return result.size() == trie.size() ? this : wrap(result); }
/** * Creates a HashMap of the given entries. * * @param entries Map entries * @param <K> The key type * @param <V> The value type * @return A new Map containing the given entries */ @SuppressWarnings("unchecked") public static <K, V> HashMap<K, V> ofEntries(Iterable<? extends Tuple2<? extends K, ? extends V>> entries) { Objects.requireNonNull(entries, "entries is null"); if (entries instanceof HashMap) { return (HashMap<K, V>) entries; } else { HashArrayMappedTrie<K, V> trie = HashArrayMappedTrie.empty(); for (Tuple2<? extends K, ? extends V> entry : entries) { trie = trie.put(entry._1, entry._2); } return trie.isEmpty() ? empty() : wrap(trie); } }
@Override public HashMap<K, V> removeAll(Iterable<? extends K> keys) { Objects.requireNonNull(keys, "keys is null"); HashArrayMappedTrie<K, V> result = trie; for (K key : keys) { result = result.remove(key); } if (result.isEmpty()) { return empty(); } else if (result.size() == trie.size()) { return this; } else { return wrap(result); } }