Convert old "into" code to the collectors

Marcos Antonio marcos_antonio_ps at hotmail.com
Wed Jan 16 07:41:34 PST 2013


Here are the compiler error messages for the two case:

List<PropriedadeChavePai> propriedadesChavePai = new ArrayList<>();

chave.getPropriedadesChavePai().stream().
    map(PropriedadeChavePai::new).
    collect(Collectors.<PropriedadeChavePai>toCollection(propriedadesChavePai));

[javac] C:\desenvolvimento\desktop\desenvolvimento\br\desenvolvimento\dados\CriadorChave.java:259: error: method toCollection in class Collectors cannot be applied to given types;
[javac]       collect(Collectors.<PropriedadeChavePai>toCollection(propriedadesChavePai));
[javac]                         ^
[javac]   required: Supplier<C>
[javac]   found: List<PropriedadeChavePai>
[javac]   reason: actual and formal argument lists differ in length
[javac]   where C,T are type-variables:
[javac]     C extends Collection<T> declared in method <T,C>toCollection(Supplier<C>)
[javac]     T extends Object declared in method <T,C>toCollection(Supplier<C>)
[javac] 1 error

--------------------------------------------------------------------------

List<PropriedadeChavePai> propriedadesChavePai = new ArrayList<>();

chave.getPropriedadesChavePai().stream().
    map(PropriedadeChavePai::new).
    collect(Collectors.<PropriedadeChavePai>toList(propriedadesChavePai));

[javac] C:\desenvolvimento\desktop\desenvolvimento\br\desenvolvimento\dados\CriadorChave.java:259: error: method toList in class Collectors cannot be applied to given types;
[javac]       collect(Collectors.<PropriedadeChavePai>toList(propriedadesChavePai));
[javac]                         ^
[javac]   required: no arguments
[javac]   found: List<PropriedadeChavePai>
[javac]   reason: actual and formal argument lists differ in length
[javac] 1 error

Marcos

----------------------------------------
> Date: Wed, 16 Jan 2013 15:05:22 +0000
> From: maurizio.cimadamore at oracle.com
> To: marcos_antonio_ps at hotmail.com
> CC: lambda-dev at openjdk.java.net
> Subject: Re: Convert old "into" code to the collectors
>
> On 16/01/13 14:34, Marcos Antonio wrote:
> > Hello, everybody!
> >
> > Before build b73 I had code like this:
> >
> > List<PropriedadeChavePai> propriedades = new ArrayList<>();
> >
> > chave.getPropriedadesChavePai().stream().
> > map(PropriedadeChavePai::new).
> > into(propriedades);
> >
> > Now I'm having trouble trying to convert it to use the new Collectors. I have tried something like this:
> >
> > chave.getPropriedadesChavePai().stream().
> > map(PropriedadeChavePai::new).
> > collect(Collectors.toCollection(propriedades));
> >
> > but it didn't work and I couldn't figure out the right thing to do.
> >
> > Thank you in advance.
> >
> > Marcos
> >
> What do you mean it didn't work? Did you get an error message from the
> compiler? If so, can you please paste it?
>
> Maurizio 		 	   		  


More information about the lambda-dev mailing list