Puis-je interroger une Liste? Java
Dire que j'ai
List<SomeObject> objList = new ArrayList<SomeObject>();
Si someObject contient un champ nommé id. Peut-on le trouver par le biais de certains de requête comme
objList.filter('id=2');
sans boucle dans la liste? Si non, alors pourquoi? Cela peut être utile et utilisé comme une alternative à écrire fastidieux pour la boucle?
- Voir stackoverflow.com/questions/122105/...
- Question similaire stackoverflow.com/questions/2846771/...
- Grâce Yuppie. La vôtre est la plus pertinente réponse.
- Vous pouvez faire objList.sélectionnez(idEqualTo(2)) lors de l'utilisation de cette bibliothèque github.com/nicholas22/jpropel-light. Vous devez définir la fonction idEqualTo() mais c'est un one-liner.
Vous devez vous connecter pour publier un commentaire.
Si vous voulez quelque chose comme linq pour java, découvrez quaere
Edit: À ce point, quaere dirait qu'il n'est pas entretenu. Avec Java 7 étant en fin de vie, vous devriez être sur Java 8 dont Flux API devrait vous obtenez la plupart du chemin, comparativement à Linq la syntaxe à point. Voir cette page pour quelques exemples.
Bibliothèques fonctionnelle, bien, des fonctionnalités telles que functionaljava fournir de tels
des méthodes.
Vous auriez besoin d'utiliser son propre
List
mise en œuvre, ce qui est incompatible natif Javas(Array)List
ou de convertir entre les deux.Un Exemple:
En utilisant functionaljava de
List
par le biais de votre projet, vous voulez éviter la conversion.Même si c'était une fonctionnalité prise en charge de la langue, alors il serait Java qui aurait besoin de faire l'itération, de sorte que vous êtes de retour à la case départ (en termes de temps, de la complexité).
Ce que vous cherchez est associative de la cartographie. Ceci peut être réalisé avec table de hachage. Si vous souhaitez associer par plus d'un type de propriété, par exemple l'id ET le nom, alors vous pourriez faire de deux HashMaps, dont la clé est l'id et une dont la clé est le nom.
Bien sûr, cela ne fonctionne pas très bien si vous voulez interroger pour de nombreuses propriétés, de sorte que la prochaine étape serait à l'aide d'un Objet de base de données orientée tels que la mise en veille qui vous permettra d'interroger la base de données pour les objets exactement comme dans votre exemple.
bref: non, vous ne pouvez pas
long: vous pouvez écrire des données propres à la structure de hachage et/champs d'index de l'objet pour certains, l'efficacité de la recherche. mais ce n'est pas une liste, plus
HashMap
ou donc.Probablement cela va aider quelqu'un,
http://code.google.com/p/joquery/
cette bibliothèque prend en charge la suite de la structure de code,
Ici
Comment faire une requête sur des collections d'objets en Java (Critères/SQL-like)?
vous pouvez voir quelques belles option/j'ai sopped sur ce on réellement.