Transform a set into a map using the current lambda API
Ali Ebrahimi
ali.ebrahimi1781 at gmail.com
Tue Mar 26 13:37:04 PDT 2013
Hi,
another solution with collect method:
names = properties.stream().collect(HashMap<String, Property>::new , ( m
,p)-> {m.put(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>wrote:
> 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