Примечание. Этот ответ на самом деле относится к вопросу Как напрямую инициализировать HashMap (в буквальном смысле)? , но поскольку он помечен как [дубликат] этого ...
До Java 9 с его Map.of () (который также ограничен 10 отображениями) вы можете расширить реализацию Map
по вашему выбору, например:
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}
Чтобы переназначить ключ esc , вам нужно скопировать
/Applications/TextMate.app/Contents/Resources/KeyBindings.dict
в
~/Library/Application Support/TextMate/KeyBindings.dict
, а затем отредактировать его, желательно с помощью TextMate :), поскольку редактор списка свойств испортил коды .
Найдите nextCompletion
и previousCompletion
и замените их значения на то, что лучше всего соответствует вашим потребностям.
Например, вы можете заменить \ 033
(код для esc ) на \ t
( -> | ).
Намного лучший способ сделать это (и это относится ко всем приложениям Mac в целом) - это