Transform a set into a map using the current lambda API
Marcos Antonio
marcos_antonio_ps at hotmail.com
Tue Mar 26 14:54:11 PDT 2013
Thank you.
________________________________
> Date: Wed, 27 Mar 2013 01:07:04 +0430
> Subject: Re: Transform a set into a map using the current lambda API
> From: ali.ebrahimi1781 at gmail.com
> To: marcos_antonio_ps at hotmail.com
> CC: lambda-dev at openjdk.java.net
>
> Hi,
> another solution with collect method:
>
> names = properties.stream().collect(HashMap<String, Property>::new , (
> m ,p)-> {m.put(p.name<http://p.name>,p); } ,( m , n) -> {m.putAll(n);
> });
>
> Ali Ebrahimi
> On Wed, Mar 27, 2013 at 12:43 AM, Ali Ebrahimi
> <ali.ebrahimi1781 at gmail.com<mailto:ali.ebrahimi1781 at gmail.com>> wrote:
> Hi,
> this is an ugly solution:
>
> Map<String, Property> names = properties.stream().reduce(new
> HashMap<>(), ( u, t) -> {
> u.put(t.name<http://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<mailto: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<http://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