Sortieren eines mehrdimensionalen Arrays

DorFey

Mitglied
Grüß euch!

Ich stehe vor folgendem Problem (und scheitere bereits seit einigen Stunden an dessen Lösung):

Mein Code:

Java:
                    public void bildeArray(){
                        Integer[][] wertungArr = new Integer[5][3];
                        wertungArr[0][0]=karte1S1;
                        wertungArr[1][0]=karte2S1;
                        wertungArr[2][0]=karte3S1;
                        wertungArr[3][0]=karte4S1;
                        wertungArr[4][0]=karte5S1;
                        wertungArr[0][1]=katkarte1S1;
                        wertungArr[1][1]=katkarte2S1;
                        wertungArr[2][1]=katkarte3S1;
                        wertungArr[3][1]=katkarte4S1;
                        wertungArr[4][1]=katkarte5S1;
                        wertungArr[0][2]=indexkarte1S1;
                        wertungArr[1][2]=indexkarte2S1;
                        wertungArr[2][2]=indexkarte3S1;
                        wertungArr[3][2]=indexkarte4S1;
                        wertungArr[4][2]=indexkarte5S1;

                        List <Integer[]> l1 = Arrays.asList(wertungArr);
                        Collections.sort(l1);
                        wertungArr = l1.toArray(new Integer[0][0]);
}

Ich möchte ein Array sortieren, bekomme jedoch folgende Fehlermeldung:

Java:
error: no suitable method found for sort(List<Integer[]>)
                        Collections.sort(l1);
                                   ^
    method Collections.<T#1>sort(List<T#1>) is not applicable
      (inferred type does not conform to upper bound(s)
        inferred: Integer[]
        upper bound(s): Comparable<? super Integer[]>)
    method Collections.<T#2>sort(List<T#2>,Comparator<? super T#2>) is not applicable
      (cannot infer type-variable(s) T#2
        (actual and formal argument lists differ in length))
  where T#1,T#2 are type-variables:
    T#1 extends Comparable<? super T#1> declared in method <T#1>sort(List<T#1>)
    T#2 extends Object declared in method <T#2>sort(List<T#2>,Comparator<? super T#2>)


Vielleicht hat jemand die eine oder andere Idee dazu.
 

httpdigest

Top Contributor
Ich glaube, zu allererst hast du ein konzeptuelles Problem zu lösen: Was bedeutet es denn, ein zweidimensionales Array, bzw. ein Array von Arrays, zu "sortieren"?
Also angenommen, du hast [[2, 5, 1], [5, 2, 7], [4, 5, 8]]. Was soll denn jetzt das Ergebnis einer "Sortierung" sein?
 

White_Fox

Top Contributor
Bist du dir sicher, daß du ein Array verwenden willst? Und nicht lieber z.B. SortedMap?
Davon abgesehen deucht mir, daß du da allerhand Zeugs in Klassen auslagern willst. Ansonsten ist es eher selten, daß man mit Arrays arbeiten will - vor allem mit mehrdimensionalen.
Beschreibe doch mal dein Problem genauer - was willst du darstellen?
 

DorFey

Mitglied
Ich würde die Werte gerne größenmäßig nach der 3. Spalte sortieren. Die Werte der 1. und 2. Spalte stehen mit jenen der 3.ten in Verbindung und sollen daher dem entsprechenden Wert der 3. Spalte zugeordnet bleiben.

Sortierte Reihenfolge wären also:
[2,5,1]
[5,2,7]
[4,5,8]

Ist ein Code für Kartenspiel-app wobei:
1.Spalte: Kartennummern von 0 bis 55
2.Spalte: Kategorien von 0 bis 6
3.Spalte: Punkte von -1 bis 10)

Hat den Hintergrund: ich möchte eine automatische Auswertung machen mit einem Zuordnungsschema mit z.B:

WENN ((indexkarte1+indexkarte2+indexkarte3+indexkarte4)==36 && indexkarte1==indexkarte2 && indexkarte2==indexkarte3 && indexkarte3==indexkarte4 ; DANN: Spielpunkte= x; Sonst: ...etc. )
 

httpdigest

Top Contributor
Denke nicht in "Tabellenform", sondern in Klassen. Schreibe also eine Klasse für alle Informationen, die "zusammengehören":
Java:
import java.util.*;
public class Karte {
  public static Comparator<Karte> BY_PUNKTE = Comparator.comparing(Karte::getPunkte);
  private final int kartennummer;
  private final int kategorie;
  private final int punkte;
  public Karte(int kartennummer, int kategorie, int punkte) {
    this.kartennummer = kartennummer;
    this.kategorie = kategorie;
    this.punkte = punkte;
  }
  public int getKartennummer() {
    return kartennummer;
  }
  public int getKategorie() {
    return kategorie;
  }
  public int getPunkte() {
    return punkte;
  }
  public String toString() {
    return "{kartennummer=" + kartennummer + ", kategorie=" + kategorie + ", punkte=" + punkte + "}";
  }

  public static void main(String[] args) {
    List<Karte> karten = Arrays.asList(
        new Karte(2, 5, 1),
        new Karte(5, 2, 7),
        new Karte(4, 5, 8));
    karten.sort(BY_PUNKTE);
    for (Karte karte : karten)
      System.out.println(karte);
  }
}
 
Zuletzt bearbeitet:

DorFey

Mitglied
@White_Fox

hab leider noch wenig Hintergrundwissen zu java auf dem ich aufbauen kann / sehr wenig Programmiererfahrung.
Programmiere daher noch relativ umständlich glaube ich.

Im Prinzip habe ich das Programm bis jetzt so ausgestaltet:

1) Array[][] mit Kartennummer , Kartenkategorie, Kartenpunkte erstellt
2) Array mit collections.shuffle zufällig sortiert
3) Die Werte aus dem sortierten Array nach der entsprechend der zufällig sortieren Reihe extrahiert um Karten aus "drawables" zu laden und in imageViews der .xml darzustellen. (in etwa so:

int imCard1S1 = getResources().getIdentifier("card" + intArr2[0][0], "drawable", getPackageName());
card1S1.setImageResource(imCard1S1);

4) onClickListener bei buttons und bei Klick auf die Karten, wobei bei einem Klick auf eine Karte, die Karte aus der Hand mit der neuen vom Stapel getauscht wird.
5) automatische Auswertung nach n Spielzügen (mit noch ungelösten Problemen)

---
 

DorFey

Mitglied
@httpdigest

danke,
Klingt nach einem guten (und auch notwendigen) Ansatz. Werde das morgen mit dem Beispiel mal durcharbeiten.

Mein Code wird langsam auch unübersichtlich und da lässt sich sicher vieles davon einsparen (bei gleicher oder besserer Funktionalität).
 

White_Fox

Top Contributor
hab leider noch wenig Hintergrundwissen zu java auf dem ich aufbauen kann / sehr wenig Programmiererfahrung.
Programmiere daher noch relativ umständlich glaube ich.
Kein Ding...das ist halt so, wenn man anfängt. Deswegen schreiben wir ja auch. :)

Ich würde dir raten, dir über folgendes klar zu werden:
  • Was für Objekte hast du?
  • Welche Funktion haben sie?
  • Welche Namen kann ich ihnen geben?
Ich würde anhand deiner Beschreibung sagen, daß du mindestens eine Klasse 'Card' (bzw. viele Card-Objekte) hast. Und ich mutmaße mal, daß noch eine Klasse 'CardStack' sinnvoll wäre.
Ich mutmaße weiter: Du baust ein Kartenspiel, und jeden Kartenwert darf es nur genau einmal geben. Vielleicht auch zweimal, aber du willst ganz sicher nicht beliebig viele Karten beliebiger Werte herstellen können. Es wäre also sinnvoll, das Erzeugen von Karten irgendwie zu beschränken.

Noch ein paar Hinweise/Tipps:
  • Programmiere in Englisch. Ich selber habe auch mal angefangen, Variablen und Klassen in Deutsch zu benennen. Ich stehe (zumindest seit nach der Schule) mit Englisch nicht unbedingt auf Kriegsfuß, hasse Anglizismen jedoch über alles. Dennoch hab ich mir das Deutschprogrammieren irgendwann abgewöhnt, denn: Unklarheit in der Sprache -> Unklarheit im Denken.
  • Wenn du dir Gedanken darüber machst was für Objekte du hast: Denke nicht zu wenig über die Namen der Klassen nach. Alles steht und fällt mit der Benamsung von Klassen und Methoden. Man mag es nicht glauben, aber so ist es tatsächlich.
 

temi

Top Contributor
Ein kurzes Beispiel für Karten, hier aus dem Forum:
Java:
public enum Farbe {
    KREUZ("Kreuz"), PIK("Pik"), HERZ("Herz"), KARO("Karo");

    private String info;

    Farbe(String info) {
        this.info = info;
    }

    @Override
    public String toString() {
        return info;
    }
}

public enum Wert {

    SIEBEN("7"), ACHT("8"), NEUN("9"), ZEHN("10"), BUBE("Bube"), DAME("Dame"), KOENIG("König"), AS("As");

    private String info;

    Wert(String info) {
        this.info = info;
    }

    @Override
    public String toString() {
        return info;
    }
}

public class Karte {

    private final Farbe farbe;
    private final Wert wert;

    public Karte(Farbe farbe, Wert wert) {
        this.farbe = farbe;
        this.wert = wert;
    }

    public Farbe getFarbe() {
        return farbe;
    }

    public Wert getWert() {
        return wert;
    }

    @Override
    public String toString() {
        return farbe + " " + wert;
    }
}

und ein (gemischtes) Kartenspiel dazu:
Java:
public class Blatt {

    private final Deque<Karte> karten;

    public Blatt() {
        karten = new ArrayDeque<>();
        karten.addAll(erzeugeGemischteKarten());
    }

    private List<Karte> erzeugeGemischteKarten() {

        List<Karte> ergebnis = new ArrayList<>();

        for (Farbe farbe : Farbe.values()){
            for (Wert wert : Wert.values()) {
                ergebnis.add(new Karte(farbe, wert));
            }
        }

        Collections.shuffle(ergebnis);

        return ergebnis;
    }

    public Karte naechsteKarte() {
        return karten.poll();
    }

    public List<Karte> gebeKarten(final int anzahl) {

        int i = 0;

        List<Karte> ergebnis = new ArrayList<>();

        while (!karten.isEmpty() && i++ < anzahl) {
            ergebnis.add(naechsteKarte());
        }

        return ergebnis;
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
CptK Variablen Teile eines Arrays zufällig sortieren Java Basics - Anfänger-Themen 7
J Ungewolltes Sortieren eines Arrays Java Basics - Anfänger-Themen 4
N Sortieren eines Polygons Java Basics - Anfänger-Themen 7
R Sortieren eines 2-dim String Arrays Java Basics - Anfänger-Themen 4
G Sortieren eines Arrays Java Basics - Anfänger-Themen 5
T sortieren eines arrays Java Basics - Anfänger-Themen 5
M Sortieren eines Strings nach Alphabet Java Basics - Anfänger-Themen 4
D erste spalte eines zweidimensionales Array sortieren ??!! Java Basics - Anfänger-Themen 2
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J HashSet mit Comparable sortieren Java Basics - Anfänger-Themen 13
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
O Sortieren mit Insertion Sort Java Basics - Anfänger-Themen 3
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Jambolo Karten sortieren nach Rang und Farbe Java Basics - Anfänger-Themen 5
rosima26 Java nach letzter Ziffer sortieren Java Basics - Anfänger-Themen 19
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
K verschiedene Eingaben sortieren Java Basics - Anfänger-Themen 6
G zweidimensionales int Array sortieren Java Basics - Anfänger-Themen 57
K Java sortieren. Java Basics - Anfänger-Themen 7
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
J Tabelle Sortieren Java Basics - Anfänger-Themen 48
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
L Sortieren Java Basics - Anfänger-Themen 1
C Wie 2 Arrays zusammenfügen und sortieren? Java Basics - Anfänger-Themen 11
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
javaluke Erste Schritte Array nach Datentyp sortieren Java Basics - Anfänger-Themen 16
O 2D-Array nach einer Spalte sortieren Java Basics - Anfänger-Themen 22
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
W Personen sortieren mit Comparator Java Basics - Anfänger-Themen 9
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
B HashMap alphabetisch sortieren Java Basics - Anfänger-Themen 2
S Streams - Abfrage absteigend sortieren Java Basics - Anfänger-Themen 11
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
L Array sortieren Java Basics - Anfänger-Themen 4
L Java Int-Array, Zahlen sortieren Java Basics - Anfänger-Themen 8
T Java: Array monat absteigend sortieren? Java Basics - Anfänger-Themen 1
B Liste sortieren? Java Basics - Anfänger-Themen 4
P Array Sortieren mit boolean? Java Basics - Anfänger-Themen 33
scratchy1 Array sortieren und dann String-Repräsentation ausgeben Java Basics - Anfänger-Themen 2
O Arrays sortieren in einer Methode Java Basics - Anfänger-Themen 2
E Methoden 2 Arrays sortieren (MergeSort) Java Basics - Anfänger-Themen 3
B Suchen und sortieren Java Basics - Anfänger-Themen 10
F Zahlen im Feld sortieren + Unterprogramm Java Basics - Anfänger-Themen 4
O Zweidimensional Array sortieren Java Basics - Anfänger-Themen 14
J Liste,Queue,Stack sortieren Java Basics - Anfänger-Themen 2
K Methoden Array[][] sortieren Java Basics - Anfänger-Themen 30
CptK Datentypen Integer ArrayList sortieren Java Basics - Anfänger-Themen 2
E ArrayList sortieren Java Basics - Anfänger-Themen 16
L Methode zum sortieren Java Basics - Anfänger-Themen 1
L Methode zum sortieren Java Basics - Anfänger-Themen 1
B Sortieren mit Iterator Java Basics - Anfänger-Themen 4
B Wie kann ich die Buchstaben sortieren nach der Höhe der Zahlen Java Basics - Anfänger-Themen 14
A Sortieren ausgerechneter Werte aus einer TXT Datei Java Basics - Anfänger-Themen 8
E LMC (Assembler) Sortieren von 3 Zahlen Java Basics - Anfänger-Themen 4
J String, Int und double Array sortieren Java Basics - Anfänger-Themen 16
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
A Array sortieren Java Basics - Anfänger-Themen 1
N StringArray alphabetisch sortieren Java Basics - Anfänger-Themen 4
Tommy135 Erste Schritte JavaDoc Sortieren Java Basics - Anfänger-Themen 5
R Winkel berechnen bzw. Geraden sortieren Java Basics - Anfänger-Themen 33
L (Integer) Liste nach aufsteigender Summe der Ziffern sortieren (mit Bedingung) Java Basics - Anfänger-Themen 8
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
D Arraylisten sortieren bitte um Hilfe Java Basics - Anfänger-Themen 4
informatikschüler21 String im Array sortieren Java Basics - Anfänger-Themen 4
U Methoden Zweidimensionales Array mit Arrays.sort sortieren? Java Basics - Anfänger-Themen 22
M Arrays sortieren und kleinster Abstand Java Basics - Anfänger-Themen 3
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
N TreeMap alphabetisch sortieren? Java Basics - Anfänger-Themen 3
I <List> sortieren Java Basics - Anfänger-Themen 2
F Interface Nach mehreren Kriterien sortieren Java Basics - Anfänger-Themen 2
R Objekte Vergleichen und Sortieren Java Basics - Anfänger-Themen 3
I Sortieren nach Priorität Java Basics - Anfänger-Themen 3
S List<T<X,Y> sortieren Java Basics - Anfänger-Themen 5
W Array sortieren Java Basics - Anfänger-Themen 3
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
Alex/89 Werte einer .txt Datei sortieren Java Basics - Anfänger-Themen 8
N Bubble Sort sortieren mit Int Werte Java Basics - Anfänger-Themen 8
N Collection sortieren/ filtern Java Basics - Anfänger-Themen 7
C Methoden Einfach verkette Liste - int Werte aufsteigend sortieren Java Basics - Anfänger-Themen 1
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
S array sortieren Java Basics - Anfänger-Themen 7
D Array mit Zufallszahlen, dann sortieren: Hilfe gesucht! Java Basics - Anfänger-Themen 1
D Methoden int-Array absteigend sortieren Java Basics - Anfänger-Themen 8
C Chars in einem String alphabetisch sortieren Java Basics - Anfänger-Themen 1
C OOP array Sortieren ohne den sort Befehl Java Basics - Anfänger-Themen 10
S int-Array mittels Arrays.sort() in einer Schleife sortieren. Java Basics - Anfänger-Themen 2
J Sortieren Java Basics - Anfänger-Themen 21
O Erste Schritte TreeMap nach Value sortieren Java Basics - Anfänger-Themen 2
K Collections Sortieren nach zweiter Spalte in JTable Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Neue Themen


Oben