2525
2626import org .apache .commons .collections4 .MapIterator ;
2727import org .apache .commons .collections4 .keyvalue .MultiKey ;
28+ import org .apache .commons .collections4 .map .AbstractHashedMap .HashEntry ;
2829
2930/**
3031 * A {@code Map} implementation that uses multiple keys to map the value.
@@ -163,8 +164,7 @@ public MultiKeyMap<K, V> clone() {
163164 */
164165 public boolean containsKey (final Object key1 , final Object key2 ) {
165166 final int hashCode = hash (key1 , key2 );
166- AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry =
167- decorated ().data [decorated ().hashIndex (hashCode , decorated ().data .length )];
167+ AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decoratedHashEntry (hashCode );
168168 while (entry != null ) {
169169 if (entry .hashCode == hashCode && isEqualKey (entry , key1 , key2 )) {
170170 return true ;
@@ -184,8 +184,7 @@ public boolean containsKey(final Object key1, final Object key2) {
184184 */
185185 public boolean containsKey (final Object key1 , final Object key2 , final Object key3 ) {
186186 final int hashCode = hash (key1 , key2 , key3 );
187- AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry =
188- decorated ().data [decorated ().hashIndex (hashCode , decorated ().data .length )];
187+ AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decoratedHashEntry (hashCode );
189188 while (entry != null ) {
190189 if (entry .hashCode == hashCode && isEqualKey (entry , key1 , key2 , key3 )) {
191190 return true ;
@@ -206,8 +205,7 @@ public boolean containsKey(final Object key1, final Object key2, final Object ke
206205 */
207206 public boolean containsKey (final Object key1 , final Object key2 , final Object key3 , final Object key4 ) {
208207 final int hashCode = hash (key1 , key2 , key3 , key4 );
209- AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry =
210- decorated ().data [decorated ().hashIndex (hashCode , decorated ().data .length )];
208+ AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decoratedHashEntry (hashCode );
211209 while (entry != null ) {
212210 if (entry .hashCode == hashCode && isEqualKey (entry , key1 , key2 , key3 , key4 )) {
213211 return true ;
@@ -227,11 +225,9 @@ public boolean containsKey(final Object key1, final Object key2, final Object ke
227225 * @param key5 the fifth key
228226 * @return true if the map contains the key
229227 */
230- public boolean containsKey (final Object key1 , final Object key2 , final Object key3 ,
231- final Object key4 , final Object key5 ) {
228+ public boolean containsKey (final Object key1 , final Object key2 , final Object key3 , final Object key4 , final Object key5 ) {
232229 final int hashCode = hash (key1 , key2 , key3 , key4 , key5 );
233- AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry =
234- decorated ().data [decorated ().hashIndex (hashCode , decorated ().data .length )];
230+ AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decoratedHashEntry (hashCode );
235231 while (entry != null ) {
236232 if (entry .hashCode == hashCode && isEqualKey (entry , key1 , key2 , key3 , key4 , key5 )) {
237233 return true ;
@@ -249,6 +245,14 @@ protected AbstractHashedMap<MultiKey<? extends K>, V> decorated() {
249245 return (AbstractHashedMap <MultiKey <? extends K >, V >) super .decorated ();
250246 }
251247
248+ HashEntry <MultiKey <? extends K >, V > decoratedHashEntry (final int hashCode ) {
249+ return decorated ().data [decoratedHashIndex (hashCode )];
250+ }
251+
252+ int decoratedHashIndex (final int hashCode ) {
253+ return decorated ().hashIndex (hashCode , decorated ().data .length );
254+ }
255+
252256 /**
253257 * Gets the value mapped to the specified multi-key.
254258 *
@@ -258,8 +262,7 @@ protected AbstractHashedMap<MultiKey<? extends K>, V> decorated() {
258262 */
259263 public V get (final Object key1 , final Object key2 ) {
260264 final int hashCode = hash (key1 , key2 );
261- AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry =
262- decorated ().data [decorated ().hashIndex (hashCode , decorated ().data .length )];
265+ AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decoratedHashEntry (hashCode );
263266 while (entry != null ) {
264267 if (entry .hashCode == hashCode && isEqualKey (entry , key1 , key2 )) {
265268 return entry .getValue ();
@@ -279,8 +282,7 @@ public V get(final Object key1, final Object key2) {
279282 */
280283 public V get (final Object key1 , final Object key2 , final Object key3 ) {
281284 final int hashCode = hash (key1 , key2 , key3 );
282- AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry =
283- decorated ().data [decorated ().hashIndex (hashCode , decorated ().data .length )];
285+ AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decoratedHashEntry (hashCode );
284286 while (entry != null ) {
285287 if (entry .hashCode == hashCode && isEqualKey (entry , key1 , key2 , key3 )) {
286288 return entry .getValue ();
@@ -301,8 +303,7 @@ public V get(final Object key1, final Object key2, final Object key3) {
301303 */
302304 public V get (final Object key1 , final Object key2 , final Object key3 , final Object key4 ) {
303305 final int hashCode = hash (key1 , key2 , key3 , key4 );
304- AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry =
305- decorated ().data [decorated ().hashIndex (hashCode , decorated ().data .length )];
306+ AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decoratedHashEntry (hashCode );
306307 while (entry != null ) {
307308 if (entry .hashCode == hashCode && isEqualKey (entry , key1 , key2 , key3 , key4 )) {
308309 return entry .getValue ();
@@ -324,8 +325,7 @@ public V get(final Object key1, final Object key2, final Object key3, final Obje
324325 */
325326 public V get (final Object key1 , final Object key2 , final Object key3 , final Object key4 , final Object key5 ) {
326327 final int hashCode = hash (key1 , key2 , key3 , key4 , key5 );
327- AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry =
328- decorated ().data [decorated ().hashIndex (hashCode , decorated ().data .length )];
328+ AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decoratedHashEntry (hashCode );
329329 while (entry != null ) {
330330 if (entry .hashCode == hashCode && isEqualKey (entry , key1 , key2 , key3 , key4 , key5 )) {
331331 return entry .getValue ();
@@ -545,7 +545,7 @@ public MapIterator<MultiKey<? extends K>, V> mapIterator() {
545545 */
546546 public V put (final K key1 , final K key2 , final K key3 , final K key4 , final K key5 , final V value ) {
547547 final int hashCode = hash (key1 , key2 , key3 , key4 , key5 );
548- final int index = decorated (). hashIndex ( hashCode , decorated (). data . length );
548+ final int index = decoratedHashIndex ( hashCode );
549549 AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decorated ().data [index ];
550550 while (entry != null ) {
551551 if (entry .hashCode == hashCode && isEqualKey (entry , key1 , key2 , key3 , key4 , key5 )) {
@@ -571,7 +571,7 @@ public V put(final K key1, final K key2, final K key3, final K key4, final K key
571571 */
572572 public V put (final K key1 , final K key2 , final K key3 , final K key4 , final V value ) {
573573 final int hashCode = hash (key1 , key2 , key3 , key4 );
574- final int index = decorated (). hashIndex ( hashCode , decorated (). data . length );
574+ final int index = decoratedHashIndex ( hashCode );
575575 AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decorated ().data [index ];
576576 while (entry != null ) {
577577 if (entry .hashCode == hashCode && isEqualKey (entry , key1 , key2 , key3 , key4 )) {
@@ -596,7 +596,7 @@ public V put(final K key1, final K key2, final K key3, final K key4, final V val
596596 */
597597 public V put (final K key1 , final K key2 , final K key3 , final V value ) {
598598 final int hashCode = hash (key1 , key2 , key3 );
599- final int index = decorated (). hashIndex ( hashCode , decorated (). data . length );
599+ final int index = decoratedHashIndex ( hashCode );
600600 AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decorated ().data [index ];
601601 while (entry != null ) {
602602 if (entry .hashCode == hashCode && isEqualKey (entry , key1 , key2 , key3 )) {
@@ -620,7 +620,7 @@ public V put(final K key1, final K key2, final K key3, final V value) {
620620 */
621621 public V put (final K key1 , final K key2 , final V value ) {
622622 final int hashCode = hash (key1 , key2 );
623- final int index = decorated (). hashIndex ( hashCode , decorated (). data . length );
623+ final int index = decoratedHashIndex ( hashCode );
624624 AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decorated ().data [index ];
625625 while (entry != null ) {
626626 if (entry .hashCode == hashCode && isEqualKey (entry , key1 , key2 )) {
@@ -797,7 +797,7 @@ public boolean removeAll(final Object key1, final Object key2, final Object key3
797797 */
798798 public V removeMultiKey (final Object key1 , final Object key2 ) {
799799 final int hashCode = hash (key1 , key2 );
800- final int index = decorated (). hashIndex ( hashCode , decorated (). data . length );
800+ final int index = decoratedHashIndex ( hashCode );
801801 AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decorated ().data [index ];
802802 AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > previous = null ;
803803 while (entry != null ) {
@@ -823,7 +823,7 @@ public V removeMultiKey(final Object key1, final Object key2) {
823823 */
824824 public V removeMultiKey (final Object key1 , final Object key2 , final Object key3 ) {
825825 final int hashCode = hash (key1 , key2 , key3 );
826- final int index = decorated (). hashIndex ( hashCode , decorated (). data . length );
826+ final int index = decoratedHashIndex ( hashCode );
827827 AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decorated ().data [index ];
828828 AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > previous = null ;
829829 while (entry != null ) {
@@ -850,7 +850,7 @@ public V removeMultiKey(final Object key1, final Object key2, final Object key3)
850850 */
851851 public V removeMultiKey (final Object key1 , final Object key2 , final Object key3 , final Object key4 ) {
852852 final int hashCode = hash (key1 , key2 , key3 , key4 );
853- final int index = decorated (). hashIndex ( hashCode , decorated (). data . length );
853+ final int index = decoratedHashIndex ( hashCode );
854854 AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decorated ().data [index ];
855855 AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > previous = null ;
856856 while (entry != null ) {
@@ -879,7 +879,7 @@ public V removeMultiKey(final Object key1, final Object key2, final Object key3,
879879 public V removeMultiKey (final Object key1 , final Object key2 , final Object key3 ,
880880 final Object key4 , final Object key5 ) {
881881 final int hashCode = hash (key1 , key2 , key3 , key4 , key5 );
882- final int index = decorated (). hashIndex ( hashCode , decorated (). data . length );
882+ final int index = decoratedHashIndex ( hashCode );
883883 AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > entry = decorated ().data [index ];
884884 AbstractHashedMap .HashEntry <MultiKey <? extends K >, V > previous = null ;
885885 while (entry != null ) {
0 commit comments