2012-04-06 5 views
2

Ich muss eine Sammlung von einzigartigen Sammlung in Java erstellen. Könnte jemand bitte mögliche Behälter für dasselbe vorschlagen.Liste der eindeutigen Listen in Java

Ich möchte etwas wie List<List<int>> wo jeder der Liste könnte sich in Bezug auf seinen Inhalt wiederholen.

Zum Beispiel, wenn mein aktueller Zustand der übergeordneten Liste sagen ist [ [1,2,3], [3,4,5], [4,5,6] ] und wenn ich die Absicht, eine weitere Liste hinzufügen sagen [3,4,5] es, sollte es nicht dupliziert werden und soll nicht hinzugefügt werden.

contains() Methode von List wird mit Ganzzahlen, Floats usw. arbeiten, aber ich bin mir nicht sicher, ob es in der Lage sein wird, Listen zu entsprechen.

Bitte schlagen Sie einen anderen Behälter vor, der Ihnen helfen könnte.

Danke.

+8

verwenden ** Set ** statt ** Liste ** –

Antwort

3

Sie werden wahrscheinlich am besten Set<List<Integer>> statt List<List<Integer>> verwenden.

Die oben auf Ihrem Beispiel angewendet:

Set<List<Integer>> uniqueLists = new HashSet<>(); 
uniqueLists.add(Arrays.asList(1, 2, 3)); 
uniqueLists.add(Arrays.asList(3, 4, 5)); 
uniqueLists.add(Arrays.asList(4, 5, 6)); 

// Now, this won't be added: 
uniqueLists.add(Arrays.asList(3, 4, 5)); 

Seien Sie vorsichtig, wenn Sie eine Sammlung in einem Satz setzen, though. Sie sollten es nicht mehr ändern, nachdem Sie es in das Set gelegt haben.

2

Vielleicht wären Sie daran interessiert, Set<Set<Integer>> zu verwenden.
Wenn Sie die Reihenfolge der Bestellung beibehalten möchten, können Sie LinkedHashSet verwenden.

Ihr Code wird sein wie

Set<Set<Integer> uniqueLists = new LinkedHashSet<Set<Integer>>(); 

uniqueLists.add(new LinkedHashSet(Arrays.asList(1, 2, 3))); 

Es zwei Probleme mit Set<List<Integer>> vermeiden würde.

1) Es wäre behält zusätzlich Reihenfolge der einzelnen Listen

2) Es individuelle Liste wird auch keine doppelten Einträge integer haben.