1 /*
2 * Copyright 2014 The Netty Project
3 *
4 * The Netty Project licenses this file to you under the Apache License, version 2.0 (the
5 * "License"); you may not use this file except in compliance with the License. You may obtain a
6 * copy of the License at:
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software distributed under the License
11 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12 * or implied. See the License for the specific language governing permissions and limitations under
13 * the License.
14 */
15 package io.netty.util.collection;
16
17 import java.util.Collection;
18
19 /**
20 * Interface for a primitive map that uses {@code int}s as keys.
21 *
22 * @param <V> the value type stored in the map.
23 */
24 public interface IntObjectMap<V> {
25
26 /**
27 * An Entry in the map.
28 *
29 * @param <V> the value type stored in the map.
30 */
31 interface Entry<V> {
32 /**
33 * Gets the key for this entry.
34 */
35 int key();
36
37 /**
38 * Gets the value for this entry.
39 */
40 V value();
41
42 /**
43 * Sets the value for this entry.
44 */
45 void setValue(V value);
46 }
47
48 /**
49 * Gets the value in the map with the specified key.
50 *
51 * @param key the key whose associated value is to be returned.
52 * @return the value or {@code null} if the key was not found in the map.
53 */
54 V get(int key);
55
56 /**
57 * Puts the given entry into the map.
58 *
59 * @param key the key of the entry.
60 * @param value the value of the entry.
61 * @return the previous value for this key or {@code null} if there was no previous mapping.
62 */
63 V put(int key, V value);
64
65 /**
66 * Puts all of the entries from the given map into this map.
67 */
68 void putAll(IntObjectMap<V> sourceMap);
69
70 /**
71 * Removes the entry with the specified key.
72 *
73 * @param key the key for the entry to be removed from this map.
74 * @return the previous value for the key, or {@code null} if there was no mapping.
75 */
76 V remove(int key);
77
78 /**
79 * Returns the number of entries contained in this map.
80 */
81 int size();
82
83 /**
84 * Indicates whether or not this map is empty (i.e {@link #size()} == {@code 0]).
85
86 */
87 boolean isEmpty();
88
89 /**
90 * Clears all entries from this map.
91 */
92 void clear();
93
94 /**
95 * Indicates whether or not this map contains a value for the specified key.
96 */
97 boolean containsKey(int key);
98
99 /**
100 * Indicates whether or not the map contains the specified value.
101 */
102 boolean containsValue(V value);
103
104 /**
105 * Gets an iterable collection of the entries contained in this map.
106 */
107 Iterable<Entry<V>> entries();
108
109 /**
110 * Gets the keys contained in this map.
111 */
112 int[] keys();
113
114 /**
115 * Gets the values contained in this map.
116 */
117 V[] values(Class<V> clazz);
118
119 /**
120 * Gets the values contatins in this map as a {@link Collection}.
121 */
122 Collection<V> values();
123 }