Array von einzigartigen Elementen?

8

Bei einem Array wie dem unten stehenden habe ich mich gefragt, ob es eine einfache Möglichkeit gibt, dieses Array in ein Array mit einzigartigen Werten zu verwandeln.

Dies ist gegeben:

%Vor%

Verwandle es in ein Ergebnis-Array wie dieses und behalte die ursprüngliche Reihenfolge bei:

%Vor%     
AnchovyLegend 01.02.2013, 22:34
quelle

5 Antworten

22

Verwenden Sie in Java 8 IntStream , um eindeutige Elemente eines Arrays zu erhalten

%Vor%

Der einfachste Weg wäre, Set aus dem Array zu erstellen.

%Vor%

und dann können Sie das Array mit:

abrufen %Vor%

Verwenden Sie LinkedHashSet , wenn Sie die Reihenfolge beibehalten möchten, oder TreeSet , wenn Sie es sortiert haben möchten.

    
zibi 01.02.2013, 22:36
quelle
3

Zwei Optionen

  1. Behalten Sie eine Karte von count und element und verwenden Sie schließlich nur diese Elemente mit count 1. (Benötigen zusätzlichen Speicherplatz, sind aber schneller)

  2. Sortieren Sie das Array und verwenden Sie beim Durchlaufen des Arrays nur nicht wiederholte.

Benötigt keinen zusätzlichen Platz, ist aber O (n lg (n))

    
smk 01.02.2013 22:37
quelle
1

Angenommen ein Array von Objekten:

%Vor%

Ersetzen Sie Object bei Bedarf durch Ihre Array-Klasse.

    
Alepac 01.02.2013 22:41
quelle
0

Hier sind zwei Ideen:

  1. Fügen Sie alle Elemente zu einem Set hinzu oder erstellen Sie ein Element mit dem Konstruktor, der ein Array als Parameter hat ( HashSet oder TreeSet , abhängig von der gewünschten Zeitkomplexität). Entfernen Sie dann für jedes Element in der Gruppe das Element, und fügen Sie es an der nächsten offenen Position eines neuen Arrays mit der Größe der Gruppe an.

  2. Sortieren Sie das Array. Fügen Sie das Objekt mit dem Index 0 zu einem ArrayList hinzu. Beginne bei Index 1 und gehe zum Index length - 1 . Wenn das aktuelle Element nicht gleich dem Element des vorherigen Index ist, fügen Sie es zu ArrayList hinzu. Ändern Sie die ArrayList bei Bedarf in ein Array.

eboix 01.02.2013 22:43
quelle
0

(Umbenennung von Ссылка )

Bei Verwendung der Stream-API von Java 8 handelt es sich um eine Lösung mit einem generischen Array-Typ:

%Vor%

Es funktioniert für jedes Objekttyp-Array, aber nicht für primitive Arrays.

Für primitive Arrays sieht das so aus:

%Vor%

Und schließlich ist hier ein kleiner Komponententest:

%Vor%     
Frederic Leitenberger 27.09.2016 18:12
quelle

Tags und Links