In Java 8, a common task is to convert a list of objects into a map using streams and lambdas. This can be achieved in various ways, depending on the desired behavior and the availability of third-party libraries like Guava.
Java 7 and Below Approach
Traditionally, mapping a list to a map involved manual iteration and a handwritten loop:
private MapnameMap(List choices) { final Map hashMap = new HashMap(); for (final Choice choice : choices) { hashMap.put(choice.getName(), choice); } return hashMap; }
Guava-Based Solutions
Guava provides a convenient method, Maps.uniqueIndex, for generating maps from lists based on a specified key extractor.
Guava with Java 7
private MapnameMap(List choices) { return Maps.uniqueIndex(choices, new Function () { @Override public String apply(final Choice input) { return input.getName(); } }); }
Guava with Java 8 Lambdas
Leveraging Java 8 lambdas simplifies the code even further:
private MapnameMap(List choices) { return Maps.uniqueIndex(choices, Choice::getName); }
Collectors to the Rescue
Java 8's Collectors class offers a robust implementation for mapping lists to maps. The toMap collector takes two arguments:
In this case, we can use Choice::getName and Function.identity() to retrieve the key and value, respectively:
Mapresult = choices.stream().collect(Collectors.toMap(Choice::getName, Function.identity()));
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3