Bom, resolvi comparar a legibilidade com um problema simples: tenho um array e quero criar um string com a concatenação de todos os elementos não vazios.
my $s=join ';', grep {length>0} @lista;
Parece bem razoável. Um colega apresentou uma solução em Python.
s=';'.join([x for x in lista if len(x)>0])
Gostei. Simples e claro. Dá para usar. Já minha primeira tentativa em Java foi um pouco mais prolixa:
String s=String.join(";",(new ArrayList(lista))
.removeAll(Arrays.asList("", null)));
String e String, ArrayList, Arrays e asList. Parece um poema concreto.Um colega apontou o fato de haver uma alternativa mais moderna:
String s=lista.stream()
.filter(s->s!=null && s.length()>0)
.collect(Collectors.joining(";"));
Tive que quebrar esta solução moderna em 3 linhas para caber neste pequeno blog.