Java entier ArrayList retourner des éléments à l'intérieur d'une gamme spécifique
Je vais avoir un java liste de tableaux d'entiers
ArrayList <Integer> ageList = new ArrayList <Integer>();
Je vais avoir quelques valeurs entières dans cette liste de tableaux. Je veux créer une nouvelle liste de tableaux qui a tous les éléments ci-dessus arrayList qui passe d'une condition, comme la valeur entre 25 et 35 ans. c'est à dire si mon ageList contient des valeurs
{12,234,45,33,28,56,27}
mon newList doit contenir
{33,28,27}
Comment puis-je y parvenir?
Note: je suis venu à java, objective C, de l'endroit où j'ai utilisé NSPredicate à facilement faire ce genre de choses..Tout semblable méthodes en java?
Juste aller sur la liste dans une boucle de ne pas le faire?
Sûrement qu'il va faire, mais je suis déjà une boucle d'environ 100 itération, et je dois faire de la ci-dessus à l'intérieur de cette boucle..Aussi je demande un moyen plus rapide
Je pense que vous êtes de faire une grosse supposition; l'ObjectiveC de la mise en œuvre d'une boucle, il suffit de vous ne verrez pas la boucle, car elle est masquée par une fonction. L'implémentation sous-jacente de NSPredicate encore à boucle sur le tableau d'évaluation de chaque élément.
J'espère juste que vous êtes conscient du fait qu'avec les outils mentionnés ci-dessous (plus précisément lambdaj) il y a un gain de performance par rapport à simplement parcourir... de ce que je sais, au moins.
En bas de l'électeur, veuillez vous des commentaires à ce sujet, afin que je puisse comprendre ce que j'ai fait de mal..
Sûrement qu'il va faire, mais je suis déjà une boucle d'environ 100 itération, et je dois faire de la ci-dessus à l'intérieur de cette boucle..Aussi je demande un moyen plus rapide
Je pense que vous êtes de faire une grosse supposition; l'ObjectiveC de la mise en œuvre d'une boucle, il suffit de vous ne verrez pas la boucle, car elle est masquée par une fonction. L'implémentation sous-jacente de NSPredicate encore à boucle sur le tableau d'évaluation de chaque élément.
J'espère juste que vous êtes conscient du fait qu'avec les outils mentionnés ci-dessous (plus précisément lambdaj) il y a un gain de performance par rapport à simplement parcourir... de ce que je sais, au moins.
En bas de l'électeur, veuillez vous des commentaires à ce sujet, afin que je puisse comprendre ce que j'ai fait de mal..
OriginalL'auteur Krishnabhadra | 2011-09-14
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de "filtre" dans l'API standard. (Il est dans Goyave et Apache Commons). Vous devrez créer une nouvelle liste, en boucle par le biais de la liste d'origine et ajouter manuellement les éléments dans la gamme de 25 à 35 de la nouvelle liste.
Si vous n'avez pas l'intention de garder l'original de la liste, vous pouvez supprimer les éléments de la gamme à l'aide d'un
Iterator
et laIterator.remove
méthode.Si vous n'avez pas de doublons dans votre liste, vous pouvez utiliser un
TreeSet
dans ce cas, vous pourriez obtenir tous les éléments dans une plage spécifique à l'aide deheadSet
/tailSet
.Liés à la question: (peut-être même un double en fait)
foreach
boucle qui a soutenu supprimer.Bien que j'ai vu ce thread..Et a tenté sa mise en œuvre..je suis un mois en java, et je suis à la compréhension de java comme un assez haut niveau de la langue ... Donc j'ai pensé qu'il devrait y avoir une sorte de joli méthode simple..Aussi je suis en train d'écrire pour Android, qui est après tout un dispositif intégré, et un de moins de ligne de code (en particulier dans une boucle) ne ferait pas de mal..de toute façon si j'ai une boucle, je suis prêt à boucle...Merci pour l'effort..
Eh bien j'ai décidé de faire une boucle autour atlast..Ne voulez pas d'ajouter des bibliothèques juste pour ce cas, même si c'est par de puissants Google..Merci pour la réponse..je vais avoir un loooooooooooooooop......
vous pouvez aussi explorer Navigables Set (valeurs uniques) et Navigables de la Carte (touche que unqiues valeurs, la valeur en tant que comte de doublons) et ensuite faire de l'oreillette, heapMap, tailSet, tailMap et-tous
OriginalL'auteur aioobe
Bien, avec Goyave vous pourriez écrire:
25 <= value && value <= 35
pour imiter la notation mathématique25 <= value <= 35
.J'apprécie cette approche, mais aussi-je trouver les conditions avec la constante sur la gauche, plus difficile à comprendre. Il y a un argument pour un type de plage quelque part 🙂
+1, si vous pouvez faire confiance à Goyave n'a pas de téléphone à la maison à chaque itération. XD
Merci pour cela, je n'ai jamais entendu parler de Goyave avant, mais je ne suis que débutant en java..Pour le problème actuel, j'ai décidé de rester avec un Itérateur et boucle..je suis sûr que je vais revenir à la goyave parfois à l'avenir..
OriginalL'auteur Jon Skeet
Vous pouvez utiliser une boucle foreach
OriginalL'auteur user219882
Essayez ceci:
Il ne fera que supprimer des éléments dans
newList
, pas dans l'originalageList
, commeit
est l'itérateur denewList
.OriginalL'auteur z3pr4h
Non, il n'est pas construit dans la fonctionnalité de java [autant que je sache].
Les mesures peuvent être:
Exemple de code:
OriginalL'auteur Harry Joy
Pas possible avec la norme JCF. Vous aurez à effectuer une itération.
Envisager l'utilisation de la Goyave. Il a ce genre de services publics.
http://code.google.com/p/guava-libraries/
OriginalL'auteur Mister Smith
Parcourir et ajouter ceux de ce match? C'est 3 lignes de code... 4, y compris le new ArrayList declration.
OriginalL'auteur Charles Goodwin