1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/*
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  this work for additional information regarding copyright ownership.
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  the License.  You may obtain a copy of the License at
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  See the License for the specific language governing permissions and
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  limitations under the License.
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage java.util;
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/**
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * A {@code Map} is a data structure consisting of a set of keys and values
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * in which each key is mapped to a single value.  The class of the objects
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * used as keys is declared when the {@code Map} is declared, as is the
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * class of the corresponding values.
263819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * <p>
273819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * A {@code Map} provides helper methods to iterate through all of the
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * keys contained in it, as well as various methods to access and update
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the key/value pairs.
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic interface Map<K,V> {
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * {@code Map.Entry} is a key/value mapping contained in a {@code Map}.
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static interface Entry<K,V> {
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /**
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Compares the specified object to this {@code Map.Entry} and returns if they
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * are equal. To be equal, the object must be an instance of {@code Map.Entry} and have the
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * same key and value.
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         *
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * @param object
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         *            the {@code Object} to compare with this {@code Object}.
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * @return {@code true} if the specified {@code Object} is equal to this
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         *         {@code Map.Entry}, {@code false} otherwise.
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * @see #hashCode()
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public boolean equals(Object object);
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /**
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Returns the key.
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         *
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * @return the key
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public K getKey();
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /**
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Returns the value.
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         *
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * @return the value
61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public V getValue();
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /**
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Returns an integer hash code for the receiver. {@code Object} which are
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * equal return the same value for this method.
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         *
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * @return the receiver's hash code.
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * @see #equals(Object)
70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public int hashCode();
72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /**
74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Sets the value of this entry to the specified value, replacing any
75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * existing value.
76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         *
77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * @param object
78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         *            the new value to set.
79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * @return object the replaced value of this entry.
80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public V setValue(V object);
82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    };
83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Removes all elements from this {@code Map}, leaving it empty.
86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws UnsupportedOperationException
88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                if removing elements from this {@code Map} is not supported.
89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @see #isEmpty()
90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @see #size()
91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void clear();
93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Returns whether this {@code Map} contains the specified key.
96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @param key
98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *            the key to search for.
99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return {@code true} if this map contains the specified key,
100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *         {@code false} otherwise.
101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public boolean containsKey(Object key);
103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Returns whether this {@code Map} contains the specified value.
106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @param value
108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *            the value to search for.
109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return {@code true} if this map contains the specified value,
110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *         {@code false} otherwise.
111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public boolean containsValue(Object value);
113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Returns a {@code Set} containing all of the mappings in this {@code Map}. Each mapping is
116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * an instance of {@link Map.Entry}. As the {@code Set} is backed by this {@code Map},
117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * changes in one will be reflected in the other.
118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return a set of the mappings
120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public Set<Map.Entry<K,V>> entrySet();
122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Compares the argument to the receiver, and returns {@code true} if the
125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * specified object is a {@code Map} and both {@code Map}s contain the same mappings.
126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @param object
128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *            the {@code Object} to compare with this {@code Object}.
129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return boolean {@code true} if the {@code Object} is the same as this {@code Object}
130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *         {@code false} if it is different from this {@code Object}.
131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @see #hashCode()
132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @see #entrySet()
133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public boolean equals(Object object);
135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Returns the value of the mapping with the specified key.
138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @param key
140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *            the key.
141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return the value of the mapping with the specified key, or {@code null}
142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *         if no mapping for the specified key is found.
143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public V get(Object key);
145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Returns an integer hash code for the receiver. {@code Object}s which are equal
148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * return the same value for this method.
149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return the receiver's hash.
151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @see #equals(Object)
152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public int hashCode();
154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Returns whether this map is empty.
157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return {@code true} if this map has no elements, {@code false}
159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *         otherwise.
160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @see #size()
161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public boolean isEmpty();
163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Returns a set of the keys contained in this {@code Map}. The {@code Set} is backed by
166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * this {@code Map} so changes to one are reflected by the other. The {@code Set} does not
167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * support adding.
168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return a set of the keys.
170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public Set<K> keySet();
172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Maps the specified key to the specified value.
175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @param key
177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *            the key.
178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @param value
179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *            the value.
180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return the value of any previous mapping with the specified key or
181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *         {@code null} if there was no mapping.
182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws UnsupportedOperationException
183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                if adding to this {@code Map} is not supported.
184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws ClassCastException
185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                if the class of the key or value is inappropriate for
186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                this {@code Map}.
187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IllegalArgumentException
188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                if the key or value cannot be added to this {@code Map}.
189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws NullPointerException
190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                if the key or value is {@code null} and this {@code Map} does
191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                not support {@code null} keys or values.
192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public V put(K key, V value);
194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Copies every mapping in the specified {@code Map} to this {@code Map}.
197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @param map
199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *            the {@code Map} to copy mappings from.
200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws UnsupportedOperationException
201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                if adding to this {@code Map} is not supported.
202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws ClassCastException
203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                if the class of a key or a value of the specified {@code Map} is
204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                inappropriate for this {@code Map}.
205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IllegalArgumentException
206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                if a key or value cannot be added to this {@code Map}.
207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws NullPointerException
208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                if a key or value is {@code null} and this {@code Map} does not
209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                support {@code null} keys or values.
210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void putAll(Map<? extends K,? extends V> map);
212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Removes a mapping with the specified key from this {@code Map}.
215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @param key
217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *            the key of the mapping to remove.
218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return the value of the removed mapping or {@code null} if no mapping
219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *         for the specified key was found.
220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws UnsupportedOperationException
221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                if removing from this {@code Map} is not supported.
222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public V remove(Object key);
224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Returns the number of mappings in this {@code Map}.
227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return the number of mappings in this {@code Map}.
229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public int size();
231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Returns a {@code Collection} of the values contained in this {@code Map}. The {@code Collection}
234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * is backed by this {@code Map} so changes to one are reflected by the other. The
235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * {@code Collection} supports {@link Collection#remove}, {@link Collection#removeAll},
236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * {@link Collection#retainAll}, and {@link Collection#clear} operations,
237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * and it does not support {@link Collection#add} or {@link Collection#addAll} operations.
238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * <p>
239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * This method returns a {@code Collection} which is the subclass of
240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * {@link AbstractCollection}. The {@link AbstractCollection#iterator} method of this subclass returns a
241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * "wrapper object" over the iterator of this {@code Map}'s {@link #entrySet()}. The {@link AbstractCollection#size} method
242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * wraps this {@code Map}'s {@link #size} method and the {@link AbstractCollection#contains} method wraps this {@code Map}'s
243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * {@link #containsValue} method.
244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * <p>
245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * The collection is created when this method is called at first time and
246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * returned in response to all subsequent calls. This method may return
247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * different Collection when multiple calls to this method, since it has no
248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * synchronization performed.
249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return a collection of the values contained in this map.
251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public Collection<V> values();
253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
254