2014-12-05 3 views
-1

Да, в основном вы можете добавить ключи HashMap в массивы?Возможно ли иметь массив, содержащий ключи HashMap?

Например, могу ли я иметь массив строк, содержащий эти ключи String HashMap?

HashMap container = new HashMap(); 
container.put("A", 1); 
container.put("B", 2); 
container.put("C", 5); 
container.put("D", 8); 
+2

Не понимаю. Вы хотите «новую строку» [] {«A», «B», «C», «D»} '? –

+3

Да, вы могли бы. Взгляните на 'HashMap # keySet' и' # toArray' –

+0

Sotirios Delimanolis Мне нужен массив, который ссылается на клавиши HashMap – user3474625

ответ

2
container.keySet().toArray() 

даст вам объект []

"A", "D", "B", "C" 

Порядок не определен.

Обратите внимание, что даже с HashMap, Keyset() возвращает набор, но ToArray() будет по-прежнему Object [], и, следовательно, должен быть литыми:

String[] keys = (String[]) container.keySet().toArray(); 

или:

String[] keys = container.keySet().toArray(new String[container.keySet().size()]); 

(вы можете сделать new String[0], но он менее эффективен, так как он перераспределяет массив, поэтому лучше сделать это прямо вверх)

+0

Хмм. Спасибо за ответ. Мне определенно нужно, чтобы массив был строковым массивом. Можно ли создать строку из ключа HashMap, а затем добавить эту новую строку в массив? – user3474625

+0

Создайте свой HashMap с помощью 'HashMap container = new HashMap ();' но вам все равно нужно сказать 'String [] keys = (String []) container.keySet(). ToArray (); ' –

+0

Мне удалось получить то, что я искал, заменив ключи и значения вокруг и используя [code] String personA = (String) container.get (1); [/ code] спасибо за помощь :) – user3474625

Смежные вопросы