How to check if all strings in an array start with upper case letter using forAll?

1.2k Views Asked by At

If I have an array of names, how do I check if they all start with an upper case letter using forall (or something else functional)?

String[] names = {"Linda", "Peter", "Carol", "Paul"};
names.forall(name -> Character.isUpperCase(name.charAt(0))); 

that is wrong and I'm not really familiar with higher order functions yet so I could use some help.

2

There are 2 best solutions below

0
Johannes Kuhn On

Use Stream.allMatch:

String[] names = {"Linda", "Peter", "Carol", "Paul"};
boolean allUpper = Arrays.stream(names).allMatch(name -> Character.isUpperCase(String.codePointAt(0)));
0
Andreas On

In Java 8+:

Arrays.stream(names).allMatch(name -> Character.isUpperCase(name.codePointAt(0)));

Or:

Stream.of(names).allMatch(name -> Character.isUpperCase(name.codePointAt(0)));

Note that I replaced charAt(0) with codePointAt(0) so it supports Unicode characters in the supplemental planes.