web-dev-qa-db-fra.com

Comment obtenir le premier élément de la liste ou du jeu?

J'aimerais savoir si je peux obtenir le premier élément d'une liste ou d'un ensemble. Quelle méthode utiliser?

252
user496949
Collection c;

Iterator iter = c.iterator();

Object first = iter.next();

(C’est ce qui se rapproche le plus du "premier" élément de Set. Vous devez comprendre qu’il n’a absolument aucune signification pour la plupart des implémentations de Set. Cela peut avoir un sens pour LinkedHashSet et TreeSet, mais pas pour HashSet.)

243
bdares

Voir le javadoc

de liste

list.get(0);

ou Ensemble

set.iterator().next();

et vérifiez la taille avant d'utiliser les méthodes ci-dessus en appelant isEmpty()

!list_or_set.isEmpty()
277
stacker

Dans Java> = 8, vous pouvez également utiliser l'API Streaming:

Optional<String> first = set.stream().findFirst();

(Utile si l'ensemble/la liste peut être vide.)

108
Sonson123

Supposons que vous avez un List<String> strings dont vous voulez le premier élément.

Il y a plusieurs façons de le faire:

Java (pré-8):

String firstElement = null;
if (!strings.isEmpty() && strings.size() > 0) {
    firstElement = strings.get(0);
}

Java 8:

Optional<String> firstElement = strings.stream().findFirst();

Goyave

String firstElement = Iterables.getFirst(strings, null);

Apache commons (4 +)

String firstElement = (String) IteratorUtils.get(strings, 0);

Apache commons (avant 4)

String firstElement = (String) CollectionUtils.get(strings, 0);

Suivi ou encapsulé dans les contrôles appropriés ou les blocs try-catch.

Kotlin:

Dans Kotlin, les deux Tableaux et la plupart des Collections (par exemple: List) ont un appel à la méthode first. Donc, votre code ressemblerait à quelque chose comme ça

pour une liste:

val stringsList: List<String?> = listOf("a", "b", null)
val first: String? = stringsList.first()

pour un tableau:

val stringArray: Array<String?> = arrayOf("a", "b", null)
val first: String? = stringArray.first()
22
Ch Vas

Je suis surpris que personne n'ait encore suggéré de solution de goyave:

com.google.common.collect.Iterables.get(collection, 0)
// or
com.google.common.collect.Iterables.get(collection, 0, defaultValue)
// or
com.google.common.collect.Iterables.getFirst(collection, defaultValue)

ou si vous attendez un seul élément:

com.google.common.collect.Iterables.getOnlyElement(collection, defaultValue)
// or
com.google.common.collect.Iterables.getOnlyElement(collection)
19
Radek Postołowicz

Ensemble

set.toArray()[0];

Liste

list.get(0);
11
Vasil Valchev

Java8 et plus

Set<String> set = new TreeSet<>();
    set.add("2");
    set.add("1");
    set.add("3");
    String first = set.stream().findFirst().get();

Cela vous aidera à récupérer le premier élément de la liste ou du jeu. Étant donné que l'ensemble ou la liste n'est pas vide (get() sur vide facultatif jettera Java.util.NoSuchElementException)

orElse() peut être utilisé comme: (ceci est juste une solution de contournement - pas recommandé)

String first = set.stream().findFirst().orElse("");
set.removeIf(String::isEmpty);

Voici l'approche appropriée:

Optional<String> firstString = set.stream().findFirst();
if(firstString.isPresent()){
    String first = firstString.get();
}

De même, le premier élément de la liste peut être récupéré.

J'espère que cela t'aides.

7
Nisarg Patil

Ce n'est pas une réponse exacte à cette question, mais au cas où les objets devraient être triés, SortedSet a une première méthode ():

SortedSet<String> sortedSet = new TreeSet<String>();
sortedSet.add("2");
sortedSet.add("1");
sortedSet.add("3");
String first = sortedSet.first(); //first="1"

Les objets triés doivent implémenter l'interface Comparable (comme le fait String)

6
molholm

Vous pouvez utiliser la méthode get (index) pour accéder à un élément à partir d'une liste.

Les ensembles, par définition, contiennent simplement des éléments et n’ont pas d’ordre particulier. Par conséquent, vous ne pouvez pas obtenir le "premier" élément, mais il est possible de le parcourir à l'aide d'un itérateur (à l'aide de la boucle for each) ou de le convertir en tableau à l'aide de la méthode toArray ().

2
Feni