348 votes

Java: Obtenir le premier élément d'une collection

Si j'ai une collection, telle que Collection<String> strs , comment puis-je sortir le premier article? Je pourrais simplement appeler un Iterator , prendre son premier next() , puis jeter le Iterator . Y a-t-il un moyen moins coûteux de le faire?

534voto

jheddings Points 10510

Regarde comme c'est la meilleure façon de le faire:

String first = strs.iterator().next();

Grande question... Au premier abord, il semble comme une surveillance de l' Collection interface.

Notez que le "premier" ne permet pas toujours de retour, la première chose que vous mettez dans la collection, et ne peut faire sens pour les collections ordonnées. Peut-être que c'est pourquoi il n'y a pas un get(item) appel, puisque l'ordre n'est pas nécessairement perserved.

Bien qu'il puisse sembler un peu inutile, il pourrait ne pas être aussi mauvais que vous le pensez. L' Iterator vraiment juste contient des informations d'indexation dans la collection, généralement, une copie de l'intégralité de la collection. L'invocation de cette méthode ne instancier l' Iterator objet, mais c'est vraiment le seul généraux (pas comme la copie de tous les éléments).

Par exemple, en examinant le type retourné par l' ArrayList<String>.iterator() méthode, nous voyons que c'est - ArrayList::Itr. C'est une classe interne qui vient de accède aux éléments de la liste directement, plutôt que de les copier.

141voto

Carl Points 4049

Iterables.get (yourC, indexYouWant)

Parce que vraiment, si vous utilisez des collections, vous devriez utiliser Google Collections.

105voto

Vitalii Fedorenko Points 17469

Il existe une méthode getFirst à Goyave Iterables :

 Iterables.getFirst(iterable, defaultValue)
 

42voto

OscarRyz Points 82553

Il n'existe pas une chose telle que la "première" d'un élément dans une Collection parce que c'est .. bien tout simplement une collection.

De la Java doc de la Collection.iterator() méthode:

Il n'existe aucune garantie quant à l'ordre dans lequel les éléments sont retournés...

Donc vous ne pouvez pas.

Si vous utilisez une autre interface comme la Liste, vous pouvez effectuer les opérations suivantes:

String first = strs.get(0);

Mais directement à partir d'une Collection, ce n'est pas possible.

3voto

Donald Raab Points 742

Dans les collections GS :

 Iterate.getFirst(iterable)
 

Cette méthode déterminera la meilleure méthode pour obtenir le premier élément en fonction du type de collection.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X