Dynamic filtering conditions in Lambda
Brian Goetz
brian.goetz at oracle.com
Fri Oct 11 15:53:40 PDT 2013
How about:
name.stream()
.filter(n -> startsWith.stream().anyMatch(s -> n.startsWith(s)))
...
On 10/11/2013 6:25 PM, Daniel Sachse wrote:
> Hey guys,
>
> I having the following working Java 8 code:
>
> List<String> names = Arrays.asList("Ben", "Brad", "Bill", "Kim", "Kara",
> "Sam", "Sara", "Jil", "Brenda");
>
> List<String> result = names.stream().filter(name -> name.startsWith("K"))
>
> .filter(name -> name.length() == 3)
> .collect(toList());
>
> ============
>
> Now I change it to use multiple possible first letters and lenghts:
>
> List<String> result = names.stream().filter(name -> name.startsWith("K") ||
> name.startsWith("B"))
>
> .filter(name -> name.length() == 3 || name.length() == 4)
> .collect(toList());
>
>
> ============
>
> Now I want to rewrite this and use a dynamic list of starting letters and a
> dynamic list of length attributes, but I totally got stuck on how to
> implement this :
>
> List<String> names = Arrays.asList("Ben", "Brad", "Bill", "Kim", "Kara",
> "Sam", "Sara", "Jil", "Brenda");
>
> *List<String> *startsWith* = Arrays.asList("B", "K", "S");*
> *List<Integer> *length* = Arrays.asList(2, 3, 4);*
>
> List<String> result = names.stream().
> // Filters missing
>
> .collect(toList());
>
>
> ============
>
> I would be really glad if you could provide me with a solution how this
> could be implemented using Lambdas :)
>
>
> Thanks in advance!
>
> Daniel
>
> --
>
>
> Wombat Software Technologies UG (haftungsbeschränkt)
> Im MediaPark 5
> D-50670 Köln
>
> Geschäftsführer: Daniel Sachse, Jacob Pawlik
> Unternehmenssitz: Köln
> Handelsregister beim Amtsgericht: Köln
> Handelsregister-Nummer: HRB 79316
>
> Web: http://www.wombatsoftware.de
> Email: mail at wombatsoftware.de
> Tel.: 0221/16905638
> Mobil: 01578/4922886
>
More information about the lambda-dev
mailing list