3 Stimmen

Kann LinkedHashSet in diesem Code durch ein HashSet ersetzt werden?

Was bewirkt der folgende Code? Kann die LinkedHashSet ersetzt werden durch eine HashSet ?

public class CollectionFunction {
    public <E> List<E> function(List<E> list) {
        return new ArrayList<E>(new LinkedHashSet<E>(list));
    }
}

7voto

Eran Medan Punkte 43538

Was bewirkt der folgende Code?

Es scheint so, als ob es verwendet wird, um Duplikate aus einer Liste zu entfernen, ohne die Reihenfolge zu ändern

  1. entfernt Duplikate (LinkedHashSet ist eine Menge)
  2. behält die Einfügereihenfolge bei ( LinkedHashSet hat eine vorhersehbare Iterationsreihenfolge)
  3. zurück in eine Liste konvertieren

Kann das LinkedHashSet durch ein HashSet ersetzt werden?

Nein, die Bestellung wird nicht garantiert (#2)

1voto

Matten Punkte 16955

Ein Set ist eine ungeordnete Sammlung von Elementen, während eine Liste die Reihenfolge der enthaltenen Elemente beibehalten muss. Sie können ein Set nicht verwenden wie HashSet um eine Liste zu implementieren, da die Reihenfolge der Elemente nicht gespeichert wird. Ein verknüpfter Hash-Satz speichert diese Informationen.

1voto

Balaswamy Vaddeman Punkte 7970

Diese Funktion entfernt die doppelten Elemente und behält die Einfügereihenfolge bei.

wenn Sie a,b,c,d,a als Eingabe erhalten Sie a,b,c,d als Ausgabe.

Ja, Sie können

Ersetzen Sie LinkedHashSet durch HashSet, wenn Sie die Einfügereihenfolge nicht wünschen. Bestellung.

Die Ausgabe kann wie folgt aussehen b,c,d,a wenn LinkedhashSet durch HashSet ersetzt wird

-3voto

Florian Punkte 278

Sie erstellt eine ArrayList aus einem Objekt, das die Schnittstelle List implementiert. Die Klasse ArrayList hat einen Konstrukteur, der eine Collection: http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html Sie müssen nachsehen, ob auch das HashSet Collection implementiert http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html . Sie müssen auch nachsehen, ob das HashSet den entsprechenden Konstruktor bereitstellt. Da das HashSet beide Anforderungen erfüllt, können Sie es ersetzen :-).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X