Comment trouver des éléments dans une collection par propriété?
J'ai une liste d'éléments, et je veux trouver une liste des éléments qui ont la propriété booléenne (variable de champ) x=true
.
Je sais que cela peut être accompli par itération, mais je cherchais une méthode commune pour le faire que dans les communes de la bibliothèque comme Apache Commons.
source d'informationauteur Mahmoud Saleh | 2012-06-11
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que itération en Java est souvent beaucoup plus simple et plus propre. Peut-être Java 8 Fermetures allons résoudre ce problème. 😉
Comparer avec @Spaeth de la solution.
Comme vous pouvez le voir, il est beaucoup plus court et plus concis.
Vous pouvez utiliser apache commons collection de la mise en œuvre d'un Prédicat.
http://commons.apache.org/collections/apidocs/org/apache/commons/collections/CollectionUtils.html
Exemple:
Quelques exemples peuvent être trouvés ici:
http://apachecommonstipsandtricks.blogspot.de/2009/01/examples-of-functors-transformers.html
Et si vous avez besoin de quelque chose de plus générique, comme l'inspection d'une valeur d'un domaine spécifique ou la propriété que vous pourriez faire quelque chose comme:
Qui pourrait se comparer à une propriété spécifique à une valeur attendue, et l'utilisation serait quelque chose comme:
Vous pouvez utiliser Google goyave's
filtre
méthode pour ce faire. Communes a aussi unfiltre
méthodehttps://www.mkyong.com/java8/java-8-streams-filter-examples/
À atteindre cet objectif En java, vous pouvez redéfinir hashCode et equals méthodes -
par exemple
dans cet exemple j'ai mached id d'événement valeur de type entier. Vous pouvez utiliser votre classe et sa propriété ici.
Après cela, vous pouvez utiliser la liste contient,indexOf,lastIndexOf et la méthode get pour rechercher un élément dans la liste. Voir ci-dessous.