it-swarm.com.de

Wie erhalte ich das erste Element der Liste oder des Sets?

Ich würde gerne wissen, ob ich das erste Element einer Liste oder eines Sets bekommen kann. Welche Methode soll man anwenden?

252
user496949
Collection c;

Iterator iter = c.iterator();

Object first = iter.next();

(Dies kommt dem "ersten" Element eines Set am nächsten. Sie sollten sich darüber im Klaren sein, dass es für die meisten Implementierungen von Set absolut keine Bedeutung hat. Dies hat möglicherweise Bedeutung für LinkedHashSet und TreeSet, aber nicht für HashSet.)

243
bdares

Siehe den Javadoc

von Liste

list.get(0);

oder Set

set.iterator().next();

und überprüfen Sie die Größe, bevor Sie die obigen Methoden anwenden, indem Sie isEmpty() aufrufen

!list_or_set.isEmpty()
277
stacker

In Java> = 8 können Sie auch die Streaming-API verwenden:

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

(Nützlich, wenn das Set/die Liste leer sein kann.)

108
Sonson123

Nehmen wir an, Sie haben einen List<String> strings, von dem Sie den ersten Artikel möchten.

Dafür gibt es verschiedene Möglichkeiten:

Java (vor 8):

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

Java 8:

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

Guave

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

Apache Commons (4 +)

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

Apache Commons (vor 4)

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

Gefolgt von oder gekapselt in den entsprechenden Checks oder Try-Catch-Blöcken.

Kotlin:

In Kotlin haben sowohl Arrays als auch die meisten Collections (zB: List) einen Methodenaufruf first. Ihr Code würde also ungefähr so ​​aussehen

für eine Liste:

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

für ein Array:

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

Ich bin überrascht, dass noch niemand eine Guavenlösung vorgeschlagen hat:

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)

oder wenn Sie ein einzelnes Element erwarten:

com.google.common.collect.Iterables.getOnlyElement(collection, defaultValue)
// or
com.google.common.collect.Iterables.getOnlyElement(collection)
19

Einstellen

set.toArray()[0];

Liste

list.get(0);
11
Vasil Valchev

Java8 und weiter

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

Auf diese Weise können Sie das erste Element der Liste oder Gruppe abrufen. Vorausgesetzt, die Menge oder Liste ist nicht leer (get() on empty optional wirft Java.util.NoSuchElementException)

orElse() kann verwendet werden als: (Dies ist nur eine Abhilfe - nicht empfohlen)

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

Nachfolgend finden Sie den entsprechenden Ansatz:

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

Ebenso kann das erste Element der Liste abgerufen werden.

Hoffe das hilft.

7
Nisarg Patil

Dies ist keine exakte Antwort auf diese Frage, aber falls die Objekte sortiert werden sollen, hat SortedSet eine first () -Methode:

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

Die sortierten Objekte müssen die Schnittstelle Comparable implementieren (wie String).

6
molholm

Mit der Methode get (index) können Sie auf ein Element aus einer Liste zugreifen.

Mengen enthalten per Definition einfach Elemente und haben keine bestimmte Reihenfolge. Aus diesem Grund gibt es kein "erstes" Element, das Sie abrufen können. Es ist jedoch möglich, es mit dem Iterator (mit der for each loop-Methode) zu durchlaufen oder es mit der toArray () -Methode in ein Array zu konvertieren.

2
Feni