В Java 8 общая задача состоит в том, чтобы преобразовать список объектов в карту, используя потоки и ламбды. Это может быть достигнуто различными способами, в зависимости от желаемого поведения и доступности сторонних библиотек, таких как гуава. Список на карту, включающая ручную итерацию и рукописную цикл:
] частная карта namemap (list
]
private Mapguava с java 7nameMap(List choices) { final Map hashMap = new HashMap(); for (final Choice choice : choices) { hashMap.put(choice.getName(), choice); } return hashMap; }
private map
]
guava с Java 8 lambdasИспользование Java 8 Lambdas упрощает код еще дальше:
private MapnameMap(List choices) { return Maps.uniqueIndex(choices, new Function () { @Override public String apply(final Choice input) { return input.getName(); } }); }
Collectors в Rescue
класс коллекционеров Java 8 предлагает надежную реализацию для списков отображения для карт. Коллекционер Tomap принимает два аргумента:
private MapФункция экстрактора ключа (функция, которая получает ключ для каждого элемента)nameMap(List choices) { return Maps.uniqueIndex(choices, Choice::getName); }
функция экстрактора значения (функция, которая получает значение для каждого element)
]В данном случае мы можем использовать выбор :: getName и function.identity () для извлечения ключа и значения соответственно:
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3