Transform a set into a map using the current lambda API

Ali Ebrahimi ali.ebrahimi1781 at gmail.com
Tue Mar 26 13:13:58 PDT 2013


Hi,
this is an ugly solution:

Map<String, Property> names = properties.stream().reduce(new HashMap<>(), (
u,  t) -> {
            u.put(t.name, t);
            return u;
        }, (m, n) -> {
            m.putAll(n);
            return m;
        });



Ali Ebrahimi

On Tue, Mar 26, 2013 at 10:48 PM, Marcos Antonio <
marcos_antonio_ps at hotmail.com> wrote:

>
> Hello!
>
> Suppose this simple POJO:
>
> public class Property
> {
>     public String name;
>     public Object value;
>     @Override
>     public boolean equals(Object obj)
>     {
>         if (this == obj)
>         {
>             return true;
>         }
>         if (obj == null || getClass() != obj.getClass())
>         {
>             return false;
>         }
>
>         Property another = (Property) obj;
>         return name.equals(another.name);
>     }
>     @Override
>     public int hashCode()
>     {
>         return name.hashCode();
>     }
> }
>
> and a set of them:
>
> Set<Property> properties = ...
>
> using the current lambda API, what's the easiest way to transform this set
> in a map
>
> Map<String, Property> names = ...
>
> where the map key is the name field of the Property object and the map
> value
> is the Property object itself?
>
> Thank you.
>
> Marcos
>
>


More information about the lambda-dev mailing list