1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.util; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ObjectInputStream; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ObjectOutputStream; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.Serializable; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * HashSet is an implementation of a Set. All optional operations (adding and 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * removing) are supported. The elements can be any objects. 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Serializable { 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long serialVersionUID = -5024744406713321676L; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project transient HashMap<E, HashSet<E>> backingMap; 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Constructs a new empty instance of {@code HashSet}. 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public HashSet() { 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this(new HashMap<E, HashSet<E>>()); 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Constructs a new instance of {@code HashSet} with the specified capacity. 45f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param capacity 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the initial capacity of this {@code HashSet}. 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public HashSet(int capacity) { 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this(new HashMap<E, HashSet<E>>(capacity)); 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Constructs a new instance of {@code HashSet} with the specified capacity 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * and load factor. 56f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param capacity 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the initial capacity. 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param loadFactor 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the initial load factor. 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public HashSet(int capacity, float loadFactor) { 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this(new HashMap<E, HashSet<E>>(capacity, loadFactor)); 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Constructs a new instance of {@code HashSet} containing the unique 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * elements in the specified collection. 69f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param collection 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the collection of elements to add. 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public HashSet(Collection<? extends E> collection) { 74f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson this(new HashMap<E, HashSet<E>>(collection.size() < 6 ? 11 : collection 75f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson .size() * 2)); 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (E e : collection) { 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project add(e); 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet(HashMap<E, HashSet<E>> backingMap) { 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.backingMap = backingMap; 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Adds the specified object to this {@code HashSet} if not already present. 87f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param object 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the object to add. 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} when this {@code HashSet} did not already contain 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the object, {@code false} otherwise 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean add(E object) { 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return backingMap.put(object, this) == null; 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Removes all elements from this {@code HashSet}, leaving it empty. 100f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #isEmpty 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #size 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void clear() { 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project backingMap.clear(); 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a new {@code HashSet} with the same elements and size as this 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code HashSet}. 112f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a shallow copy of this {@code HashSet}. 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see java.lang.Cloneable 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @SuppressWarnings("unchecked") 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Object clone() { 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<E> clone = (HashSet<E>) super.clone(); 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project clone.backingMap = (HashMap<E, HashSet<E>>) backingMap.clone(); 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return clone; 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CloneNotSupportedException e) { 124fb0ec0e650bf8be35acb0d47da0311a7c446aa33Elliott Hughes throw new AssertionError(e); 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Searches this {@code HashSet} for the specified object. 130f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param object 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the object to search for. 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if {@code object} is an element of this 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code HashSet}, {@code false} otherwise. 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean contains(Object object) { 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return backingMap.containsKey(object); 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns true if this {@code HashSet} has no elements, false otherwise. 143f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if this {@code HashSet} has no elements, 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code false} otherwise. 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #size 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean isEmpty() { 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return backingMap.isEmpty(); 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns an Iterator on the elements of this {@code HashSet}. 155f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return an Iterator on the elements of this {@code HashSet}. 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see Iterator 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Iterator<E> iterator() { 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return backingMap.keySet().iterator(); 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Removes the specified object from this {@code HashSet}. 166f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param object 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the object to remove. 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if the object was removed, {@code false} otherwise. 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean remove(Object object) { 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return backingMap.remove(object) != null; 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the number of elements in this {@code HashSet}. 178f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the number of elements in this {@code HashSet}. 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int size() { 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return backingMap.size(); 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private void writeObject(ObjectOutputStream stream) throws IOException { 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project stream.defaultWriteObject(); 18819ab821c3b1da5812590140a21ad9d551a3a3ec5Joshua Bloch stream.writeInt(backingMap.table.length); 18919ab821c3b1da5812590140a21ad9d551a3a3ec5Joshua Bloch stream.writeFloat(HashMap.DEFAULT_LOAD_FACTOR); 19019ab821c3b1da5812590140a21ad9d551a3a3ec5Joshua Bloch stream.writeInt(size()); 19119ab821c3b1da5812590140a21ad9d551a3a3ec5Joshua Bloch for (E e : this) { 19219ab821c3b1da5812590140a21ad9d551a3a3ec5Joshua Bloch stream.writeObject(e); 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @SuppressWarnings("unchecked") 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private void readObject(ObjectInputStream stream) throws IOException, 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ClassNotFoundException { 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project stream.defaultReadObject(); 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int length = stream.readInt(); 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project float loadFactor = stream.readFloat(); 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project backingMap = createBackingMap(length, loadFactor); 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int elementCount = stream.readInt(); 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = elementCount; --i >= 0;) { 205f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson E key = (E) stream.readObject(); 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project backingMap.put(key, this); 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashMap<E, HashSet<E>> createBackingMap(int capacity, float loadFactor) { 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new HashMap<E, HashSet<E>>(capacity, loadFactor); 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 214