Java enthält vs anyMatch Verhalten

Also wenn ich einen Name Objekt und haben eine ArrayList Typ Name (names), und ich möchte prüfen, ob meine Liste von Namen enthält, die einem bestimmten Name Objekt (n), konnte ich es zwei Möglichkeiten:

boolean exists = names.contains(n);

oder

boolean exists - names.stream().anyMatch(x -> x.equals(n));

Ich überlegte, ob diese beiden Verhalten und dann überlegt, was passiert, wenn n zugewiesen wurde null?

Für enthält, so wie ich das verstehe, ist das argument null, dann kehrt er zurück true enthält die Liste null. Wie würde ich dies erreichen anyMatch - würde es durch die Verwendung Objects.equals(x, n)?

Wenn das funktioniert, dann, welche Vorgehensweise effizienter ist - ist es anyMatch wie kann es von Vorteil Faulheit und Parallelität?

Was ist names geben?
Wenn names ist in der Tat ein ArrayList, dann würde ich sagen die Leistung wäre ähnlich. Aber wenn es so etwas wie eine HashSet dann ein contains nennen, wäre fast sicher effizienter (da es nicht wirklich brauchen, um eine Schleife durch die Elemente).
Er Sprach, dass es eine ArrayList. Es ist zumindest davon auszugehen, dass dies wahr ist.
Ich bin nicht zu hinterfragen, nur gibt ein wenig mehr Informationen als verlangt. Die Beantwortung der spezifischen engen Frage allein würde vielleicht geben ein Falsches Bild.
Vereinbart ist, könnte es sich lohnen, zeigen diese Differenz (als Zbynek Vyskovsky - kvr000 auch schon in seiner Antwort)

InformationsquelleAutor Tranquility | 2016-02-04

Schreibe einen Kommentar