web-dev-qa-db-fra.com

Quelle est la meilleure façon de couper () tous les éléments d'une List <String>?

J'ai un List<String>, contenant potentiellement des milliers de chaînes. J'implémente une méthode de validation, qui inclut de s'assurer qu'il n'y a pas d'espaces blancs de début ou de fin dans chaque chaîne.

J'itère actuellement sur la liste, j'appelle String.trim () pour chaque String et je l'ajoute à un nouveau List<String> et réaffecter à la liste d'origine après:

List<String> trimmedStrings = new ArrayList<String)();
for(String s : originalStrings) {
  trimmedStrings.add(s.trim());
}

originalStrings = trimmedStrings;

J'ai l'impression qu'il y a DRYer moyen de le faire. Existe-t-il ici des approches alternatives plus efficaces? Merci!

Edit: Oui, je suis sur Java 8, donc Java 8 suggestions sont les bienvenues!)

11
heez

Dans Java 8, vous devez utiliser quelque chose comme:

List<String> trimmedStrings = 
    originalStrings.stream().map(String::trim).collect(Collectors.toList());

il est également possible d'utiliser unaire String::trim opérateur pour les éléments de la liste initiale (les instances non coupées String seront écrasées) en appelant cette méthode:

originalStrings.replaceAll(String::trim);
29
Cootri

Si vous utilisez Java-8, vous pouvez utiliser:

    final List<Object> result = arrayList.stream()
        .map(String::trim)
        .collect(Collectors.toList());
4