Ok. Voici un problème. Ceci est ma collection: {2,3,4,2,3,5}
. Supposons que c'est un List
pour l'instant. Je voudrais rechercher cette collection pour tous les matches de '2'
. Je voudrais des index de la même chose. Je sais qu'il y a indexOf()
et lastIndexOf()
méthodes dans List
et Arrays.binarySearch()
. Cependant, tous retournent un élément indiquant la position de l'élément recherché. Existe-t-il un moyen simple et efficace de trouver tous les matches? Veuillez noter que cette question n'est pas limitée aux types primitifs. Effectuer une itération à travers la collection et vérifier tous les éléments manuellement.Trouver tous les résultats dans une collection Java
Répondre
Vous ne pouvez pas binarySearch sauf si la liste est triée. S'il est trié, tous les éléments correspondants sont entre indexOf et lastIndexOf.
Ceci, vraiment. Vous pouvez aller et faire une méthode pour simplifier les choses, mais votre meilleur pari pour ce que je crois que vous voulez sera de créer un tableau, faire une boucle dans votre collection passée, et ajouter des résultats correspondants à votre tableau créé, puis retourner il. – Eric
Si vous voulez toutes les correspondances, la manière la plus simple est de la faire défiler.
La simplicité est la meilleure stratégie.
Ou vous avez une raison particulière de ne pas le boucler?
Je pense que ce ne serait pas une approche optimale du problème. Trop d'itérations, trop de temps processeur. – Jay
Mais si vous ne trier la collection à l'avance, la recherche binaire ne ferait pas beaucoup d'aide non plus. Si vous utilisez une certaine structure de données, comme une arborescence binaire, la même question aurait des solutions différentes. La collection est trop générale. Vous pouvez donc choisir la bonne structure de données en fonction de vos besoins. –
Existe-t-il une API tierce offrant ce type de fonctionnalités? Apache Commons? Google Collections? – Jay
Pourquoi voulez-vous trouver les index? Si possible, envisagez d'utiliser autre chose qu'une liste, comme une table de hachage qui autorise les doublons ou une liste triée afin de réduire votre temps de recherche. Sinon, la seule façon d'obtenir toutes les instances de cet entier est de rechercher manuellement en utilisant une boucle for.
Essayez Apache CollectionUtil
méthode de classe countMatches
Vérifiez la Bolts functional programming library. Vous pouvez faire un filtrage avec ça.
Utilisez LambdaJ et vous aurez un système de fermeture pour écrire votre étui.
- 1. Comment chercher tous les résultats dans lucene.net
- 2. C# Regex: retourner une collection de résultats
- 3. comment trouver tous les fichiers extraits dans une branche
- 4. Comment effectuer une action tous les 5 résultats?
- 5. Comment énumérer tous les sites Web et les données dans une collection de sites SharePoint
- 6. Trouver tous les mots clés du langage Java et les noms des classes API java
- 7. Comment obtenir tous les résultats de regex?
- 8. Trouver tous les enregistrements sans les associés
- 9. Linqtosql - Trouver toutes les entités correspondant à tous les tags dans une requête
- 10. Java: Cache les résultats du calcul?
- 11. SQL Server 2005, Pagin Query obtenir tous les résultats nombre
- 12. Prototype: trouver tous les éléments avec une certaine classe?
- 13. Comment puis-je trouver tous les Guids dans un texte?
- 14. Rails: Comment trouver() tous les enregistrements uniques dans certains champs?
- 15. Trouver tous les nom de fichier dans C
- 16. Méthode générique pour trouver tous les contrôles TextBox dans Silverlight
- 17. Trouver tous les dossiers dans le répertoire racine
- 18. Regex - trouver tous les liens dans un tweet
- 19. Comment lancer une opération sur une collection en Python et collecter les résultats?
- 20. Collection aléatoire Java
- 21. Changement de valeur d'un élément dans une collection affecte tous les éléments en double
- 22. Trouver tous les fichiers .rpt dans la solution VS
- 23. Trouver tous les * rendus images * dans un fichier HTML
- 24. Trouver tous les contrôles sur msform à partir de C#
- 25. Quels sont tous les résultats des actions ASP.Net MVC?
- 26. Surveiller les changements à une collection
- 27. Écoute de tous les événements JInternalFrame - Java
- 28. Où puis-je trouver une collection de Ruby Gems?
- 29. Trouver où Java charge les fichiers?
- 30. Comment trouver tous les objets db contenant une chaîne dans Sybase
P.S: Merci à tous pour vos réponses. Je pense que celui-ci fait ce que je veux: http://commons.apache.org/collections/apidocs/org/apache/commons/collections/CollectionUtils.html#select(java.util.Collection, org.apache.commons.collections .Predicate) – Jay
Si le lien ci-dessus est cassé, recherchez la méthode choisie ici http://commons.apache.org/collections/apidocs/org/apache/commons/collections/CollectionUtils.html – Jay