| /* |
| * Copyright (C) 2007 The Guava Authors |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.google.common.collect; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import javax.annotation.Nullable; |
| |
| /** |
| * GWT emulation of {@code HashBiMap} that just delegates to two HashMaps. |
| * |
| * @author Mike Bostock |
| */ |
| public final class HashBiMap<K, V> extends AbstractBiMap<K, V> { |
| |
| /** |
| * Returns a new, empty {@code HashBiMap} with the default initial capacity |
| * (16). |
| */ |
| public static <K, V> HashBiMap<K, V> create() { |
| return new HashBiMap<K, V>(); |
| } |
| |
| /** |
| * Constructs a new, empty bimap with the specified expected size. |
| * |
| * @param expectedSize the expected number of entries |
| * @throws IllegalArgumentException if the specified expected size is |
| * negative |
| */ |
| public static <K, V> HashBiMap<K, V> create(int expectedSize) { |
| return new HashBiMap<K, V>(expectedSize); |
| } |
| |
| /** |
| * Constructs a new bimap containing initial values from {@code map}. The |
| * bimap is created with an initial capacity sufficient to hold the mappings |
| * in the specified map. |
| */ |
| public static <K, V> HashBiMap<K, V> create( |
| Map<? extends K, ? extends V> map) { |
| HashBiMap<K, V> bimap = create(map.size()); |
| bimap.putAll(map); |
| return bimap; |
| } |
| |
| private HashBiMap() { |
| super(new HashMap<K, V>(), new HashMap<V, K>()); |
| } |
| |
| private HashBiMap(int expectedSize) { |
| super( |
| Maps.<K, V>newHashMapWithExpectedSize(expectedSize), |
| Maps.<V, K>newHashMapWithExpectedSize(expectedSize)); |
| } |
| |
| // Override these two methods to show that keys and values may be null |
| |
| @Override public V put(@Nullable K key, @Nullable V value) { |
| return super.put(key, value); |
| } |
| |
| @Override public V forcePut(@Nullable K key, @Nullable V value) { |
| return super.forcePut(key, value); |
| } |
| } |