Eindeutige Elemente aus Array extrahieren

Also ich bin an dieser Aufgabe schon seit 2 Stunden dran und ich hab keine Ahnung was daran nicht stimmt, höchst wahrscheinlich ist es ein bloeder Fehler! ;(

Also es geht darum, dass mehrere Zahlen eingelesen werden, und ich dann alle doppelt-vorkommenden Zahlen lösche.
Also aus 1,2,1,2,1,2 wird 1,2 !

Wir sollen wirklich nur die Basics verwenden und nichts allzu kompliziertes!

hier der Java Code(IN der BL) und die Ausgabe:
Java:
public static int []loescheDoppelteZahl(int[]array)
    {
       int array2[] = new int[array.length]; 
int vorkommen = 0;
        for(int i = 0,j=0;i<array.length;i++)
        {
            vorkommen = 0;
            for(int b = 0;b<array.length;b++)
            {
                if(i==b)
                {
                    continue;
                }
                if(array[b]==array[i])
                {
                    vorkommen++;
                }
               
            }
            if(vorkommen==0)
            {
                array2[j]=array[i];j++;
            }
        }
        return array2;
    }

Ausgabe ist bei einer Eingabe von 1,2,1,2 : 0,0,0,0
Ausgabe bei einem anderen Versuch von 1,2,1,2: 1,2,2,2

Vielen Dank schon mal im Voraus!:)
 

Flown

Administrator
Mitarbeiter
Also das kann man auf mehrere Arten lösen. Such dir eine Möglichkeit aus. Dein Code ist ein wenig wirr und kaum zu verstehen, darum liefere ich dir einen neuen:

Java:
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class DistinctTest {
  
  public static void main(String[] args) {
    System.out.println(Arrays.toString(distinctCollection(new Integer[] { 1, 2, 1, 2, 3, 1, 2, 1, 2, 2, 0 })));
    System.out.println(Arrays.toString(distinctArray(new int[] { 1, 2, 1, 2, 3, 1, 2, 1, 2, 2, 0 })));
    System.out.println(Arrays.toString(distinctLambda(new Integer[] { 1, 2, 1, 2, 3, 1, 2, 1, 2, 2, 0 })));
  }
  
  public static <T> T[] distinctCollection(T[] elements) {
    Set<T> distinct = new HashSet<>();
    for (T element : elements) {
      distinct.add(element);
    }
    @SuppressWarnings("unchecked")
    T[] result = (T[]) distinct.toArray();
    return result;
  }
  
  public static int[] distinctArray(int[] elements) {
    int cur = 0;
    int[] map = new int[elements.length];
    outer: for (int i = 0; i < elements.length; i++) {
      for (int j = 0; j < cur; j++) {
        if (map[j] == elements[i]) {
          continue outer;
        }
      }
      map[cur++] = elements[i];
    }
    return Arrays.copyOf(map, cur);
  }
  
  public static <T> T[] distinctLambda(T[] elements) {
    @SuppressWarnings("unchecked")
    T[] result = (T[]) Arrays.stream(elements).distinct().toArray();
    return result;
  }
}
 
Zuletzt bearbeitet:

Thallius

Top Contributor
public static <T> T[] distinctLambda(T[] elements) {
@SuppressWarnings("unchecked")
T[] result = (T[]) Arrays.stream(elements).distinct().toArray();
return result;
}
}[/code]

Lamda ist echt geil. Also nicht alles was neu ist ist auch gut finde ich.
Für mich ist so ein Code die perfekte Arbeitsplatz-Erhaltuns-Maßnahme, weil ausser dem Author niemand anders den Code mehr warten kann.

Gruß

Claus
 

Flown

Administrator
Mitarbeiter
Also ich finde das jetzt nicht so schlimm mit der Lesbarkeit. Erst wenn man wirklich mit mappings und groupings arbeitet wirds magisch.

Ich finde nur die Brücken von Array <> Collection <> Stream schlecht gelöst und wünschte mir es wäre möglich mit den primitiven Datentypen wie bei C# zu arbeiten, dann würde das ganze auch runder werden.
 

Thallius

Top Contributor
Ich finde es lustig, dass nach und nach irgendwelche Dinge "erfunden" werden um nachträglich Funktionalitäten zu schaffen die man früher immer als "Braucht kein Mensch" erachtet hat.

Das fängt ja schon mit den Generics an. Java war ja stolz darauf eine streng statisch typisierte Sprache zu sein. Blöd wenn man dann irgendwann feststellt, dass man damit manche Sachen einfach nicht realisiern kann und dann bastelt man halt schnell noch die Generics dazu.

Jetzt hat man festgestellt, dass es doch sehr nett sein kann mit Methoden-Pointern zu arbeiten und schwups gibt es auf einmal Lamda. Im Endeffekt wird dadurch doch einfach nur alles immer undurchsichtiger und komplexer und für Anfänger wesentlich schwerer zu begreifen. Java verliert damit seinen einzigen Vorteil gegenüber C++, nämlich das es einfacher zu erlernen ist. Wenn aber in Zukunft alle mit solchen Konstrukten wie oben um sich werfen, dann kann ich auch gleich C++ lernen, dass ist dann auf jeden Fall auch noch um einiges performanter.

Gruß

Claus
 
Zuletzt bearbeitet:

Harry Kane

Top Contributor
Besonders lustig finde ich es, wenn solche Lösungen angeboten werden, wenn in der Frage extra nach Basics gefragt war.
@TO
Bei deinem Ansatz gehst du 2x über dein Array, 1x mit dem Index i, 1x mit dem Index b. Sobald die Bedingung
Code:
 if(array[b]==array[i])
erfüllt ist, wird die Zahl nicht in das Ergebnisarray aufgenommen. Dadurch eliminierst du aber alle Zahlen, die 2x oder mehr im Ausgangsarray vorkommen! Was du aber möchtest, ist des, jede Zahl, die im Ausgangsarray vorkommt, im Ergebnisarray aufzunehmen, aber nur 1x.
Dazu musst du einfach in der inneren for-Schleife den Index b nicht von 0 bis array.length laufen lassen, sondern nur von 0 bis i.
 

JavaMeister

Gesperrter Benutzer
Finde die Antworten auch grenzwertig. Entweder man verweist bei Basics auf Google oder man gibt die Lösung an. Mit den Postings kann der TO aber ca. 0 anfangen.

Außerdem ist der Titel des Postings unpassend. Mods können das korrigieren, damit der nächste, der diese Frage hat, diesen Thread als Lösung identifizieren kann.
 

Flown

Administrator
Mitarbeiter
Ein Basic Bsp ist doch in meinem Codesnippet vorhanden! Außerdem wollte ich zeigen welches Spektrum es in Java gibt ein und dieselbe Aufgabe zu lösen. Denn wenn jemand diesen Post irgendwann einmal findet, kann er sich den passenden Lösungsweg aussuchen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Eindeutige Nummer (8 stellig) erzeugen Java Basics - Anfänger-Themen 9
I Eindeutige Stringvariablen in Schleife generieren Java Basics - Anfänger-Themen 4
E Eindeutige Identifikation eines Pcs? Java Basics - Anfänger-Themen 18
N Eindeutige Dateinamen generieren Java Basics - Anfänger-Themen 17
K Eindeutige Instanzen von einem Objekt Java Basics - Anfänger-Themen 13
H eindeutige Instanz erzeugen Java Basics - Anfänger-Themen 4
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
E Elemente aus Liste entfernen und hinzufügen Java Basics - Anfänger-Themen 3
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
A Elemente in einem Array Java Basics - Anfänger-Themen 5
J Methoden Die Reihenfolge der Iterator-Elemente umkehren Java Basics - Anfänger-Themen 3
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
T SCC Elemente Java Basics - Anfänger-Themen 0
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
H Array Elemente Java Basics - Anfänger-Themen 17
T Elemente aus Array zu TableView JavaFX übertragen Java Basics - Anfänger-Themen 2
J Array Elemente werden nicht gefunden! Java Basics - Anfänger-Themen 6
GAZ String replace() Elemente tauschen Java Basics - Anfänger-Themen 13
J Array; Elemente kopieren Java Basics - Anfänger-Themen 17
V Array aus Klasse um vererbte Elemente erweitern Java Basics - Anfänger-Themen 3
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
A Array Elemente extrahieren ! Java Basics - Anfänger-Themen 4
J Elemente in einem 2D-Array summieren Java Basics - Anfänger-Themen 6
Kirby.exe Anzahl vorkommender Elemente im Array zählen Java Basics - Anfänger-Themen 9
M Matrix auf 4 Elemente untersuchen mit offenen Enden Java Basics - Anfänger-Themen 8
M Matrix Elemente vergleichen Java Basics - Anfänger-Themen 11
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
L String zerlegen & elemente hinzufügen Java Basics - Anfänger-Themen 5
L Anzahl der Elemente key in einem Array mit log(N) Laufzeit Java Basics - Anfänger-Themen 4
L Erste Schritte Elemente zwei Schlangen vergleichen Java Basics - Anfänger-Themen 14
E Elemente aus Liste löschen Java Basics - Anfänger-Themen 5
L Array Elemente verschieben Java Basics - Anfänger-Themen 5
S Elemente in Liste einfügen Java Basics - Anfänger-Themen 2
D jsoup.select findet keine elemente Java Basics - Anfänger-Themen 2
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
W ArrayList löscht alle Elemente bis auf eines Java Basics - Anfänger-Themen 2
M Elemente in einer ArrayList einander zuordnen. Java Basics - Anfänger-Themen 18
T Klassen Doppelte Elemente aus Container entfernen Java Basics - Anfänger-Themen 6
G Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben Java Basics - Anfänger-Themen 5
GreenTeaYT HashMap dupliziert meine Elemente? Java Basics - Anfänger-Themen 2
J Elemente in Array speichern, löschen, ... Java Basics - Anfänger-Themen 3
arjoopy Kapselung Elemente aus Objekt-Array ausgeben Java Basics - Anfänger-Themen 8
U Input/Output Elemente eines Binären Suchbaums ausgeben Java Basics - Anfänger-Themen 10
M ComboBox bestimmte Elemente disablen/ausgrauen Java Basics - Anfänger-Themen 3
K Anzahl gleicher Elemente in Array Java Basics - Anfänger-Themen 32
M LinkedList elemente löschen Java Basics - Anfänger-Themen 2
D Klassen Doppelt so viele Elemente in Arraylist ? Java Basics - Anfänger-Themen 4
V Elemente aus einem Array mit null überschreiben Java Basics - Anfänger-Themen 4
A Methoden Char-Arrays auf aufeinanderfolgende Elemente vergleichen! Java Basics - Anfänger-Themen 7
C Array Elemente Paarweise vertauschen Java Basics - Anfänger-Themen 2
kilopack15 Array auf doppelte Elemente überprüfen Java Basics - Anfänger-Themen 16
W Elemente aus einer anderen GUI steuern! Java Basics - Anfänger-Themen 13
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
R Elemente eine Liste im Ring schliessen Java Basics - Anfänger-Themen 9
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
B in einem abstrakten Set ,Elemente einer einfache verkettete List epeichern Java Basics - Anfänger-Themen 13
M Klassen Gesamt speicherbare Elemente in Vector? Java Basics - Anfänger-Themen 3
M Elemente eines Arrays verschieben Java Basics - Anfänger-Themen 9
A Anzahl der Elemente in einem Stack wiedergeben Java Basics - Anfänger-Themen 3
O Rekursiver Durchlauf verschachtelter Elemente Java Basics - Anfänger-Themen 1
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
R Variablen [GELÖST]Elemente in Array um Schrittweite s verschieben Java Basics - Anfänger-Themen 2
1 Wie addiert man die Elemente einer Verketteten Liste? Java Basics - Anfänger-Themen 5
T Erste Schritte Elemente finden, deren Name erst "zusammengesetzt" wird Java Basics - Anfänger-Themen 8
gamebreiti Gui menu ArrayList Elemente wiedererkennen Java Basics - Anfänger-Themen 3
C Matrixmultiplikation ohne einzelne Elemente aufzurufen Java Basics - Anfänger-Themen 2
V wie kann ich in zweidimensionaller Arraylist auf die einzelnen Elemente zugreifen ? Java Basics - Anfänger-Themen 7
W wie legt man die elemente der liste k Mal fest ? Java Basics - Anfänger-Themen 7
S Anzahl unterschiedlicher Elemente zählen Java Basics - Anfänger-Themen 4
G Performance - höhere Anzahl Swing Elemente Java Basics - Anfänger-Themen 5
C ArrayList - überschreibt Elemente Java Basics - Anfänger-Themen 7
A Mehrere 100.000 Elemente verlgeichen Java Basics - Anfänger-Themen 8
A JList Elemente in ein andres JList Adden Java Basics - Anfänger-Themen 5
B Zweidimensionales Array Elemente jeder Spalte zählen Java Basics - Anfänger-Themen 9
L Rückwärtsausgabe der Array-Elemente Java Basics - Anfänger-Themen 5
1 Elemente von 2 Arrays vergleichen Java Basics - Anfänger-Themen 12
1 Minimum aller Elemente in einem Array bestimmen Java Basics - Anfänger-Themen 10
M aus x Elementen y Elemente auswählen Java Basics - Anfänger-Themen 6
J Eingabe Elemente Aktivieren Java Basics - Anfänger-Themen 2
R Best Practice Elemente aus ArrayList entfernen (performant) Java Basics - Anfänger-Themen 6
G String Elemente auf Zahlen Überprüfen Java Basics - Anfänger-Themen 21
T Elemente im Array umdrehen Java Basics - Anfänger-Themen 9
L Elemente zufällig in ein Array verteilen Java Basics - Anfänger-Themen 12
T Wieviel Array-Elemente Java Basics - Anfänger-Themen 19
M Elemente im DefaultListModel separat auslesen Java Basics - Anfänger-Themen 2
T Collections Zugriff auf Elemente aus Iterator() Schleife Java Basics - Anfänger-Themen 4
P BitSet- Objekt- Anzahl der Elemente bestimmen Java Basics - Anfänger-Themen 2
S JPA / Elemente einer Liste ansprechen Java Basics - Anfänger-Themen 5
B mit einem Iterrator elemente aus einer liste löschen Java Basics - Anfänger-Themen 3
Mrtwomoon Collections Hashset elemente ohne Eckigeklammer ausgeben Java Basics - Anfänger-Themen 9
W Elemente in einem Array nach 'oben' verschieben Java Basics - Anfänger-Themen 9
M Vector überschreibt Elemente bei add()-Methode Java Basics - Anfänger-Themen 10
H Redundante Elemente aus ArrayList entfernen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben