- /*
- * @(#)DenseIntMapImpl.java 1.4 03/12/19
- *
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-
- package com.sun.corba.se.impl.orbutil ;
-
- import java.util.ArrayList ;
-
- /** Utility for managing mappings from densely allocated integer
- * keys to arbitrary objects. This should only be used for
- * keys in the range 0..max such that "most" of the key space is actually
- * used.
- */
- public class DenseIntMapImpl
- {
- private ArrayList list = new ArrayList() ;
-
- private void checkKey( int key )
- {
- if (key < 0)
- throw new IllegalArgumentException( "Key must be >= 0." ) ;
- }
-
- /** If key >= 0, return the value bound to key, or null if none.
- * Throws IllegalArgumentException if key <0.
- */
- public Object get( int key )
- {
- checkKey( key ) ;
-
- Object result = null ;
- if (key < list.size())
- result = list.get( key ) ;
-
- return result ;
- }
-
- /** If key >= 0, bind value to the key.
- * Throws IllegalArgumentException if key <0.
- */
- public void set( int key, Object value )
- {
- checkKey( key ) ;
- extend( key ) ;
- list.set( key, value ) ;
- }
-
- private void extend( int index )
- {
- if (index >= list.size()) {
- list.ensureCapacity( index + 1 ) ;
- int max = list.size() ;
- while (max++ <= index)
- list.add( null ) ;
- }
- }
- }