Примечание. Этот ответ фактически относится к вопросу Как напрямую инициализировать HashMap (в буквальном смысле)? но так как он помечен как [дубликат] этого. , ,
До Java 9 с ее картой . из () (который также ограничен 10 отображениями) вы можете расширить реализацию Map
по вашему выбору, e. г. :
public class InitHashMap extends HashMap
повторно реализовать конструкторов HashMap
:
public InitHashMap() {
super();
}
public InitHashMap( int initialCapacity, float loadFactor ) {
super( initialCapacity, loadFactor );
}
public InitHashMap( int initialCapacity ) {
super( initialCapacity );
}
public InitHashMap( Map extends K, ? extends V>
m ) {
super( m );
}
и добавьте дополнительный конструктор, который вдохновлен ответом Aerthel , но является общим с использованием типов Object...
и :
public InitHashMap( final Object... keyValuePairs ) {
if ( keyValuePairs.length % 2 != 0 )
throw new IllegalArgumentException( "Uneven number of arguments." );
K key = null;
int i = -1;
for ( final Object keyOrValue : keyValuePairs )
switch ( ++i % 2 ) {
case 0: // key
if ( keyOrValue == null )
throw new IllegalArgumentException( "Key[" + (i >> 1) + "] is ." );
key = (K) keyOrValue;
continue;
case 1: // value
put( key, (V) keyOrValue );
}
}
Пробег
public static void main( final String[] args ) {
final Map map = new InitHashMap<>( 1, "First", 2, "Second", 3, "Third" );
System.out.println( map );
}
Выход
{1=First, 2=Second, 3=Third}
Вы также можете расширить интерфейс Map
:
public interface InitMap extends Map {
static Map of( final Object... keyValuePairs ) {
if ( keyValuePairs.length % 2 != 0 )
throw new IllegalArgumentException( "Uneven number of arguments." );
final Map map = new HashMap<>( keyValuePairs.length >> 1, .75f );
K key = null;
int i = -1;
for ( final Object keyOrValue : keyValuePairs )
switch ( ++i % 2 ) {
case 0: // key
if ( keyOrValue == null )
throw new IllegalArgumentException( "Key[" + (i >> 1) + "] is ." );
key = (K) keyOrValue;
continue;
case 1: // value
map.put( key, (V) keyOrValue );
}
return map;
}
}
Пробег
public static void main( final String[] args ) {
System.out.println( InitMap.of( 1, "First", 2, "Second", 3, "Third" ) );
}
Выход
{1=First, 2=Second, 3=Third}