Существующие ответы работают, конечно, хорошо, но в интересах постоянного обновления этого сайта новой информацией, вот способ сделать это в Java 8:
String[][] arr = {{"key", "val"}, {"key2", "val2"}};
HashMap<String, String> map = Arrays.stream(arr)
.collect(HashMap<String, String>::new,
(mp, ar) -> mp.put(ar[0], ar[1]),
HashMap<String, String>::putAll);
Java 8 Stream
s великолепны, и я рекомендую вам посмотреть их для получения более подробной информации, но вот основы для этой конкретной операции:
Arrays.stream
получит Stream<String[]>
для работы.
collect
берет ваш Stream
и сводит его к одному объекту, который собирает всех членов. Требуется три функции. Первая функция, поставщик, генерирует новый экземпляр объекта, который собирает членов, поэтому в нашем случае это просто стандартный метод для создания HashMap
. Вторая функция, аккумулятор, определяет, как включить элемент Stream
в целевой объект, в вашем случае мы просто хотим put
ключ и значение, определенные как первое и второе значение из каждого массива, в карта. Третья функция, объединяющая, - это функция, которая может объединять два целевых объекта, в случае, если по какой-либо причине JVM решила выполнить этап накопления с несколькими HashMap
с (в данном случае, или любым другим целевым объектом в другой случай), а затем необходимо объединить их в один, который в основном предназначен для асинхронного выполнения, хотя обычно это не происходит.