Ich stimme sepp2k zu, aber es gibt noch einige andere Details, die wichtig sein könnten:
new HashSet<Foo>(myList);
erhalten Sie eine unsortierte Menge, die keine Duplikate enthält. In diesem Fall wird die Duplizierung mit der Methode .equals() an Ihren Objekten erkannt. Dies geschieht in Kombination mit der Methode .hashCode(). (Für mehr über Gleichheit siehe ici )
Eine Alternative, die eine sortierte Menge ergibt, ist:
new TreeSet<Foo>(myList);
Dies funktioniert, wenn Foo Comparable implementiert. Wenn dies nicht der Fall ist, sollten Sie einen Komparator verwenden:
Set<Foo> lSet = new TreeSet<Foo>(someComparator);
lSet.addAll(myList);
Dies hängt entweder von compareTo() (aus der Vergleichsschnittstelle) oder compare() (aus dem Komparator) ab, um die Eindeutigkeit zu gewährleisten. Wenn Sie sich also nur für die Eindeutigkeit interessieren, verwenden Sie das HashSet. Wenn es Ihnen um die Sortierung geht, sollten Sie das TreeSet verwenden. (Denken Sie daran: Optimieren Sie später!) Wenn es auf Zeiteffizienz ankommt, verwenden Sie ein HashSet, wenn es auf Raumeffizienz ankommt, sehen Sie sich TreeSet an. Beachten Sie, dass effizientere Implementierungen von Set und Map über Trove (und andere Quellen) verfügbar sind.