Инициализировать картуэкземпляр из записей карты - PullRequest
0 голосов
/ 04 февраля 2019

Скажем, у меня есть некоторые записи на карте, например:

var a = Map.entry("a", new Object());
var b = Map.entry("b", new Object());
var c = Map.entry("c", new Object());

var m = Map.of(a,b,c);  // error here

Я получаю эту ошибку:

Не удается разрешить метод 'из (java.util.Map.Entry, java.util.Map.Entry, java.util.Map.Entry) '

Я просто хочу создать новую карту из записей на карте, как я могу это сделать?Не вопрос конкретно о том, как инициировать Map с учетом экземпляров Map.Entry.

Ответы [ 5 ]

0 голосов
/ 04 февраля 2019

Для создания карты из записей Используйте:

var a = Map.entry("a", new Object());
var b = Map.entry("b", new Object());
var c = Map.entry("c", new Object());

var m = Map.ofEntries(a,b,c);

или:

var m = Map.ofEntries(
             entry("a", new Object()),
             entry("b", new Object()),
             entry("c", new Object()));

Вы также можете создать карту без явного создания записей:

var m = Map.of("a", new Object(),
               "b", new Object(),
               "c", new Object());
0 голосов
/ 04 февраля 2019

Используйте это

var m = Map.ofEntries(a, b, c);

вместо

var m = Map.of(a,b,c);
0 голосов
/ 04 февраля 2019

Простой ответ:

var a = Map.entry("a", new Object());
var b = Map.entry("b", new Object());
var c = Map.entry("c", new Object());

var m = Map.ofEntries(a,b,c);  // ! use Map.ofEntries not Map.of

И тип Map.entry(key,val) - Map.Entry<K,V>, на случай, если вам интересно.

0 голосов
/ 04 февраля 2019

Замените

Map.of(a,b,c); 

на

Map.ofEntries(a,b,c);

Если вы все еще хотите использовать Map.of(), тогда вы должны вставлять ключи и значения явно.

Map.Entry() возвращает неизменный Map.Entry, содержащий заданный ключ и значение.Эти записи подходят для заполнения экземпляров карты с использованием метода Map.ofEntries().

Когда использовать Map.of() и когда использовать Map.ofEntries()

0 голосов
/ 04 февраля 2019

Из jdk-9 вы можете использовать Map.of() для создания Map с парами значений ключей

Map<String, Object> map = Map.of("a", new Object(), "b", new Object(), "c", new Object());

А также с помощью SimpleEntry

Map<String, Object> map = Map.ofEntries(
  new AbstractMap.SimpleEntry<>("a", new Object()),
  new AbstractMap.SimpleEntry<>("b", new Object()),
  new AbstractMap.SimpleEntry<>("c", new Object()));

Или с помощьюMap.ofEntries ОП предложение

...