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 * https://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.Map; 18 19 /** 20 * Interface for a primitive map that uses {@code char}s as keys. 21 * 22 * @param <V> the value type stored in the map. 23 */ 24 public interface CharObjectMap<V> extends Map<Character, V> { 25 26 /** 27 * A primitive entry in the map, provided by the iterator from {@link #entries()} 28 * 29 * @param <V> the value type stored in the map. 30 */ 31 interface PrimitiveEntry<V> { 32 /** 33 * Gets the key for this entry. 34 */ 35 char 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(char 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(char key, V value); 64 65 /** 66 * Removes the entry with the specified key. 67 * 68 * @param key the key for the entry to be removed from this map. 69 * @return the previous value for the key, or {@code null} if there was no mapping. 70 */ 71 V remove(char key); 72 73 /** 74 * Gets an iterable to traverse over the primitive entries contained in this map. As an optimization, 75 * the {@link PrimitiveEntry}s returned by the {@link Iterator} may change as the {@link Iterator} 76 * progresses. The caller should not rely on {@link PrimitiveEntry} key/value stability. 77 */ 78 Iterable<PrimitiveEntry<V>> entries(); 79 80 /** 81 * Indicates whether or not this map contains a value for the specified key. 82 */ 83 boolean containsKey(char key); 84 }