Java 8 - filtre chaîne vide à partir de la Liste ne fonctionne pas
Je voudrais supprimer une Chaîne vide à partir d'une Liste de Chaînes de caractères.
Voici ce que j'ai essayé, à l'aide de l'API stream:
list.stream().filter(item-> !item.isEmpty()).collect(Collectors.toList());
et la chaîne vide est toujours présent dans la liste. Ce qui me manque ?
n'est-il pas
êtes-vous de l'affectation de la valeur de retour d'une variable?
Vous ne souhaitez pas conserver les éléments qui sont pas vide? Vous ne conservant que le vide.
les deux sont valables...point.isEmpty() et String::isEmpty
String::isEmpty
?êtes-vous de l'affectation de la valeur de retour d'une variable?
Vous ne souhaitez pas conserver les éléments qui sont pas vide? Vous ne conservant que le vide.
les deux sont valables...point.isEmpty() et String::isEmpty
OriginalL'auteur stackUnderflow | 2016-11-15
Vous devez vous connecter pour publier un commentaire.
filter()
garde les éléments qui correspondent le prédicat. Soyou besoin de l'inverse de prédicat:Cela permettra également de ne pas modifier l'original de la liste. Il va créer un filtrée copie de la liste d'origine. Si vous avez besoin
Si vous souhaitez modifier la liste d'origine, vous devez utiliser
ou tout simplement
(flux) ou removeIf() ne fonctionnerait pas sur le Tableau , il vous faudra convertir le tableau en liste de tableaux comme
ArrayList<String> newArray = new ArrayList<String>(oldArray.asList());
OriginalL'auteur JB Nizet
Je soupçonne que vous n'êtes pas garder le résultat. Le résultat est retourné, la liste d'origine n'est pas modifié tant que c'est de la programmation fonctionnelle style.
OriginalL'auteur Peter Lawrey
Peut-être la chaîne contient des espaces? Remplacer
item -> item.isEmpty()
avecitem -> !item.trim().isEmpty()
OriginalL'auteur Adam Siemion
vous collectez les éléments vides 🙂
vous voulez le pas vide, afin d'inverser le prédicat
en outre, le flux n'est pas la modification de la liste d'origine, de sorte
Collect(Collectrors.toList())
est de retourner le résultat du prédicat 🙂ahh vrai aussi 🙂 bon oeil!!
tnxs @TheLostMind
OriginalL'auteur ΦXocę 웃 Пepeúpa ツ
Vous êtes en train de supprimer les chaînes non-vides (vérifiez votre condition de filtre). Essayez:
Sinon, vous pourriez avoir besoin de vérifier que vous êtes en supprimant les espaces ainsi:
OriginalL'auteur ernest_k
Vous ne supprimez pas les Cordes à vide de la liste, vous étiez à les retrouver. Votre condition de filtre est mal.
Essayer comme ceci:
OriginalL'auteur Andrei Olar
vous pouvez suivre l'exemple ci-dessous, il peut vous aider à
OriginalL'auteur Sangram Badi
OriginalL'auteur printfabcd
Pourrait être votre Liste contient une valeur null. Alors d'abord filtre avec null vérifier
puis à nouveau filtre à vide
Si vous avez apache commons lang lib utiliser Apache StringUtils isNotBlank
OriginalL'auteur Imran