Warum gibt es keine getFirst (iterable) Methode?
Iterables präsentieren zwei Methoden für die getLast
public static <T> T getLast(Iterable<T> iterable);
public static <T> T getLast(Iterable<T> iterable, @Nullable T defaultValue);
aber nur eine für getFirst
public static <T> T getFirst(Iterable<T> iterable, @Nullable T defaultValue);
Gibt es irgendwelche design/Umsetzung Grund für den Bruch der Symmetrie?
InformationsquelleAutor der Frage Stan Kurilin | 2011-12-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, der Punkt ist, dass es keinen Grund für eine
getFirst(iterable)
wird, dass das getan werden könnte, mititerable.iterator().next()
. Guave ist eine ausgezeichnete versuchen, halten Sie die API-klein und damit nicht die Dinge hinzufügen, die könnte /sollte sich einfach einen anderen Weg.Auf der anderen Seite, es gibt nicht bereits einen Mechanismus, um zu testen, ob eine iterierbar leer ist und wenn ja, Rückgabe eines default-Wert anstelle des ersten Wertes. Daher
getFirst(iterable, default)
.Zudem gibt es nicht einen einfachen Weg, um das Letzte element, also
getLast(iterable)
undgetLast(iterable, default)
InformationsquelleAutor der Antwort John B
Als Ergänzungen zu @JohnB die Antwort, die ich zeigen möchte,Guave die devs Meinung über
getFirst(durchsuchbar)
. Kevin Bourrillion (Kopf-Guave - dev) schreibt dort:So, Sie haben die Wahl:
iterable.iterator().next()
,Iterables.getFirst(Iterable<T> iterable, T default)
,Iterables.get(Iterable<T>, 0)
,iterable.iterator().next()
und einige docs) und verwenden Sie es als alsoIterables2.getFirst(iterable)
,PS: ich hatte ähnliche Zweifel vor einiger Zeit und fand exaktes Duplikat dieser Frage damals.
InformationsquelleAutor der Antwort Xaerxess