This behavior is explicitly documented in
String.split(String regex) (emphasis mine):
This method works as if by invoking the two-argument split method with the given expression and a limit argument of zero. Trailing empty strings are therefore not included in the resulting array.
If you want those trailing empty strings included, you need to use
String.split(String regex, int limit) with a negative value for the second parameter (
String array = values.split("\\|", -1);