Inhalte aus Array vergleichen

B

ByeBye 158824

Hallo Forum,

Gegeben: Integer Array
Gesucht: Redundanzen

Ich speichere in einem Integer Array mehrere Int werte. Diese Werte müssen untereinander verschieden sein. Und da ist das Problem! Gibt es bereits geeignete Methoden, mit denen man den Inhalt eins Arrays nach Gleichheit überprüfen kann oder einen trivialen Weg zur Lösung :)?

Das Problem beschäftigt mich nun bereits seit Stunden und ich komme auf keine Lösung. Danke vorab für eure Antworten
 
Trivial wohl aber nicht besonders schnell:
Java:
for (int i = 0; i < arr.length-1; ++i)
  for (int j = i+1; j < arr.length; ++j)
    if (arr[i] == arr[j])
      throw new EqualException();

Alternativ könntest Du das Array sortieren, dann sind gleiche Elemente gleich hintereinander. Oder das ganze Array in einem Set speichern, da gibt es keine gleichen Elemente. Oder beim Erstellen schon sicherstellen, dass alles einmalig ist (falls möglich).
 
Musst du unbedingt ein Array haben? Wenn du auch sonstige Collections verwenden kannst, dann könntest du ja eine Set-Implementierung, z.B. HashSet, benutzen.

Set ist eine Collection, die keine doppelten Einträge zulässt. Somit ist jeder Eintrag (in deinem Fall Wert) nur einmalig vorhanden.
 
Ich würde auch kein Array benutzen, wenn es nicht unbedingt nötigist. Abgesehen von der Möglichkeit mit den Collections, die dies automatisch überprüfen gäbe es noch verschiedene Datentypen die die Methode contains(object) behalten, welche ein boolean zurückliefern. Dies könntest du abfragen und je nach dem deine Zahl hinzufügen oder nicht.

Ich glaube z.B. HashSet kann dies oder auch der Vector, obwohl dieser nicht so gern gesehen ist ;)
 
Alle 3 Antworten sind richtig. Welche du nun für dich anwenden möchtest ist denke ich überwiegent von deinem eigentlichem Ziel abhängig.

Ich denke die von mahe ist die, die du eigentlich gesucht hast.
 
Hallo Leute,

Danke schön für die Antworten. Johannes hat das richtig erkannt, mahes Lösung reicht für meinen Funktionsumfang vollkommen aus. Ich dachte mir bereits das es mit 2 for each Schleifen gehen müsste, habe es gestern allerdings nicht zum Laufen gebracht.

Danke auch an Akeshihiro und HonniCilest für eure Lösungsansätze.

So leich können sich Probleme in Luft auflösen :D

Beste Grüße,
Emil :)
 

Neue Beiträge

Zurück