Array und Index

lenaxx7

Mitglied
Hallo zusammen,

undzwar brauche ich dringend Hilfe, da ich leider nicht weiter komme beim Programmieren.

Ich habe ein array, das ich mit zahlen (double) fülle. Neben dem array, will ich aber auch den Index speichern
sprich
arr[0] = 0.987 -> index 0
arr[1] = 0.684 -> index 1
arr[2] = 1.000 -> index 2
...
später möchte ich die Werte vom array der Größe nach absteigend sortieren, dafür muss ich den Index mitgebe, dass wenn ich es sotiert habe:
arrNew[0] = 1.000 -> index 2
arrNew[1] = 0.987 -> index 0
arrNew[2] = 0.684 -> index 1


ich muss die Indexe mitspeichern, damit ich später auf etwas anderes (den Rest zu erklären wäre zu viel) zugreifen kann.
Also möchte ich mit einer Methode, so einfach wie möglich, den Double Wert in ein Array füllen und dabei immer den Index mitgeben.
Hoffe es war verständlich.

Vielen Dank schonmal im Voraus, ich hoffe Ihr könnt mir weiterhelfen!!
 

temi

Top Contributor
Evtl. könntest du eine eigene Klasse schreiben, die einen double und einen int Wert als Instanzvariable haben. Dein Array nimmt dann Elemente dieser Klasse auf.

Oder du hast zwei Arrays, die du parallel sortierst.
 

lenaxx7

Mitglied
ich habs mit der eigenen Klasse probiert
Java:
public class SkalarIndex implements Comparable{

    double skalar;
    int index;
    }

}

Jetzt weiß ich aber nicht weiter.
ich befülle mein Array so
Java:
 for (int a = 0; a < arr.length; a++) {
     skalar[a] = merge(arr[a], newArrRef);
 }
Die Schleife füllt mein Array mit der Methode die ich geschrieben habe.
Wo geb ich denn jetzt den Index mit hinzu und wie sortier ich dann im nächsten Schritt die Double Werte, wo ich den Index mitgebe?
Ich komm da einfach nicht weiter
 

temi

Top Contributor
Du kannst die beiden Instanzvariablen "public" machen und die Werte direkt zuweisen.
Java:
SkalarIndex s = new SkalarIndex();
s.skalar = 4.2;
s.index = 0;

Besser wäre es allerdings die Instanzvariablen "private" zu machen und einen entsprechenden Konstruktor sowie Getter zu schreiben.

Du musst Comparable auch implementieren. Siehe Doku.
 

lenaxx7

Mitglied
Java:
public class SkalarIndex implements Comparable{

    double skalar;
    int index;

    @Override
    public int compareTo(Object o) {
      
        return 0;
    }

}

Mach ich den Vergleich dann in compareTo(Object o) ?
 

temi

Top Contributor
Mach ich den Vergleich dann in compareTo(Object o) ?
In der Methode compareTo() vergleichst du das als Parameter übergebene Objekt mit dem Objekt, auf dem die Methode compareTo() aufgerufen wird.
Java:
ComparableObject o1 = new ComparableObject(22); // Pseudoklasse..
ComparableObject o2 = new ComparableObject(42);

int result = o1.compareTo(o2); // vergleicht o1 mit o2

Die Methode wird intern von anderen Klassen verwendet, z. B. um Objekte zu sortieren, in Collections.sort(). Dadurch könntest du eine Collection von Objekten deiner Klasse an sort() übergeben.

Du kannst natürlich auch mittels der Methode compareTo() Vergleiche durchführen. Du musst das Ergebnis (siehe Doku) einfach entsprechend interpretieren.
 
Zuletzt bearbeitet:

lenaxx7

Mitglied
Aber warum vergleiche ich denn die Objekte. Ich check es einfach nicht. Ich will doch nur mein Array mit noch einer int Zahl, den Index speichern und am Ende mein Array sortieren, dass die Indexe an der richtigen Stelle stehen.
Diese Comparable Geschichte verwirrt mich total.
 

temi

Top Contributor
Aber warum vergleiche ich denn die Objekte. Ich check es einfach nicht. Ich will doch nur mein Array mit noch einer int Zahl, den Index speichern und am Ende mein Array sortieren, dass die Indexe an der richtigen Stelle stehen.
Diese Comparable Geschichte verwirrt mich total.
Keine Ahnung. Du hast doch deinen Code hier gezeigt und das steht halt "implements Comparable". Du wirst schon wissen, warum du das machen willst, oder?
 

lenaxx7

Mitglied
Ja, so hat mir das jemand anderes vorgeschlagen. So hab ichs dann probiert, verstehe es aber nicht. Gibts für mein Problem denn keine andere Möglichkeit diese zu lösen?
 

temi

Top Contributor
Comparable ist übrigens ein generisches Interface. Du solltest also unbedingt noch den Typen angeben. In deinem Fall müsste es "implements Comparable<SkalarIndex>" lauten.
 

temi

Top Contributor
Danke für deine Hilfe, nur leider bin ich gar nicht weiter gekommen. Ich checks nach wie vor nicht, wie ich jetzt vorgehen soll.
Lies noch mal Beitrag #4! Deine Klasse hat zwei Instanzvariablen auf die du mit dem "Punkt" zugreifen kannst (sofern die Sichtbarkeit passt, siehe ebenfalls Beitrag #4).

Du willst nach dem Wert "skalar" sortieren, dann musst du den wohl auch zum Sortieren verwenden.
 

lenaxx7

Mitglied
Java:
              SkalarIndex[] skalarP = new SkalarIndex[listOfFiles.length];

                for (int a = 0; a < arr.length; a++) {
                     skalarP[a].skalar = merge(arr[a], newArrRef);
                     skalarP[a].index = a;
                }

So hab ich das jetzt in der anderen Klasse.
ist skalarP jetzt mit dem skalar und dem jeweiligen Index befüllt ?


So bekomme ich jetzt bei
Java:
 skalarP[a].skalar = merget(arr[a], newArrRef);
eine NullPointerException
 
Zuletzt bearbeitet:

temi

Top Contributor
ist skalarP jetzt mit dem skalar und dem jeweiligen Index befüllt ?
Nein.

Dein Array enthält jetzt keine primitiven Variablen mehr, sondern Objekte, bzw. Instanzen. Nachdem du das Array erzeugt hast, enthalten alle Stelle den Wert null (daher auch die Exception).

Du brauchst etwa folgendes:
Java:
SkalarIndex si = new SkalarIndex(); // besser wäre ein Konstruktor, der die beiden Werte entgegennimmt
si.skalar = merge(arr[a], newArrRef);
si.index = a;
skalarP[a] = si; // weist das erzeugte SkalaIndex-Objekt dem Arrayelement zu
 

temi

Top Contributor
Vielleicht noch als Ergänzung:

Sobald du dem Array-Element eine gültige Instanz zugewiesen hast (z. B. mit skalarP[a] = new SkalarIndex(merge(arr[a], newArrRef), a);), kannst du anschließend auch darauf zugreifen, z. B. um die enthaltenen Werte zu vergleichen if (skalarP[n].skalar < skalarP[n+1].skalar) {...
 
Zuletzt bearbeitet:

jari

Aktives Mitglied
Nichts leichter als das:

Java:
import java.util.Arrays;
import java.util.Comparator;
import java.util.Random;

public class MyClass {
    static Number[][] createArray(int n) {
        Random random = new Random();
        Number[][] aa = new Number[n][2];
        for (int i = 0; i < n; i++) {
            aa[i][0] = random.nextInt(1001) / 1000.0;
            aa[i][1] = i;
        }
        return aa;
    }

    static void sortArrayBy(int column, Number[][] aa) {
        Arrays.sort(aa, Comparator.comparingDouble(a -> a[column].doubleValue()));
    }

    static void sortArrayReversedBy(int column, Number[][] aa) {
        Arrays.sort(aa, (a, b) -> Double.compare(b[column].doubleValue(), a[column].doubleValue()));
    }

    public static void main(String[] args) {
        Number[][] array = createArray(5);
        System.out.println(Arrays.deepToString(array));
        sortArrayBy(0, array);
        System.out.println(Arrays.deepToString(array));
        sortArrayReversedBy(0, array);
        System.out.println(Arrays.deepToString(array));
        sortArrayBy(1, array);
        System.out.println(Arrays.deepToString(array));
    }
}

Jetzt fragt sich der Leser vielleicht, wieso ich bei "sortArrayReversedBy" nicht einfach Comparator.comparingDouble(a -> a[column].doubleValue()).reversed() geschrieben habe? Nun ja, weil Java an der Stelle einen Bug hat. :)
 

lenaxx7

Mitglied
Nein.

Dein Array enthält jetzt keine primitiven Variablen mehr, sondern Objekte, bzw. Instanzen. Nachdem du das Array erzeugt hast, enthalten alle Stelle den Wert null (daher auch die Exception).

Du brauchst etwa folgendes:
Java:
SkalarIndex si = new SkalarIndex(); // besser wäre ein Konstruktor, der die beiden Werte entgegennimmt
si.skalar = merge(arr[a], newArrRef);
si.index = a;
skalarP[a] = si; // weist das erzeugte SkalaIndex-Objekt dem Arrayelement zu
Danke! Damit bin ich schon mal weiter gekommen! :)
Jetzt muss ich nur noch gucken, wie ich jetzt genau die Double Werte vergleiche
 

lenaxx7

Mitglied
Nichts leichter als das:

Java:
import java.util.Arrays;
import java.util.Comparator;
import java.util.Random;

public class MyClass {
    static Number[][] createArray(int n) {
        Random random = new Random();
        Number[][] aa = new Number[n][2];
        for (int i = 0; i < n; i++) {
            aa[i][0] = random.nextInt(1001) / 1000.0;
            aa[i][1] = i;
        }
        return aa;
    }

    static void sortArrayBy(int column, Number[][] aa) {
        Arrays.sort(aa, Comparator.comparingDouble(a -> a[column].doubleValue()));
    }

    static void sortArrayReversedBy(int column, Number[][] aa) {
        Arrays.sort(aa, (a, b) -> Double.compare(b[column].doubleValue(), a[column].doubleValue()));
    }

    public static void main(String[] args) {
        Number[][] array = createArray(5);
        System.out.println(Arrays.deepToString(array));
        sortArrayBy(0, array);
        System.out.println(Arrays.deepToString(array));
        sortArrayReversedBy(0, array);
        System.out.println(Arrays.deepToString(array));
        sortArrayBy(1, array);
        System.out.println(Arrays.deepToString(array));
    }
}

Jetzt fragt sich der Leser vielleicht, wieso ich bei "sortArrayReversedBy" nicht einfach Comparator.comparingDouble(a -> a[column].doubleValue()).reversed() geschrieben habe? Nun ja, weil Java an der Stelle einen Bug hat. :)
Das schaut mir ein wenig kompliziert aus. Ich probier es mal in mein Programm einzubauen. Vielen Dank aber schon mal :) !
 

lenaxx7

Mitglied
Nichts leichter als das:

Java:
import java.util.Arrays;
import java.util.Comparator;
import java.util.Random;

public class MyClass {
    static Number[][] createArray(int n) {
        Random random = new Random();
        Number[][] aa = new Number[n][2];
        for (int i = 0; i < n; i++) {
            aa[i][0] = random.nextInt(1001) / 1000.0;
            aa[i][1] = i;
        }
        return aa;
    }

    static void sortArrayBy(int column, Number[][] aa) {
        Arrays.sort(aa, Comparator.comparingDouble(a -> a[column].doubleValue()));
    }

    static void sortArrayReversedBy(int column, Number[][] aa) {
        Arrays.sort(aa, (a, b) -> Double.compare(b[column].doubleValue(), a[column].doubleValue()));
    }

    public static void main(String[] args) {
        Number[][] array = createArray(5);
        System.out.println(Arrays.deepToString(array));
        sortArrayBy(0, array);
        System.out.println(Arrays.deepToString(array));
        sortArrayReversedBy(0, array);
        System.out.println(Arrays.deepToString(array));
        sortArrayBy(1, array);
        System.out.println(Arrays.deepToString(array));
    }
}

Jetzt fragt sich der Leser vielleicht, wieso ich bei "sortArrayReversedBy" nicht einfach Comparator.comparingDouble(a -> a[column].doubleValue()).reversed() geschrieben habe? Nun ja, weil Java an der Stelle einen Bug hat. :)
Mein Ergebnis ist nun :
[[1.0, 30], [0.4173373153551636, 26], [0.18604613756675975, 25], [0.1842971756035945, 50], [0.0, 0], [0.0, 1], [0.0, 2], [0.0, 3], [0.0, 4], ........
soweit das was ich wollte.
Wie kann ich denn jetzt zb auf Index 30 oder Index 26, Index 25, Index 50, ... zugreifen ?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Index in einem Array löschen Allgemeine Java-Themen 10
R Index in einem Array löschen Allgemeine Java-Themen 2
Developer_X Array Index Out of Bounds Exception Allgemeine Java-Themen 1
L kann in einem array der 1. index größer als der 2. sein? Allgemeine Java-Themen 10
Fynn29 Liste sortieren ohne Array und ohne vorgegebene Sortierung Allgemeine Java-Themen 24
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
M Queue mit einem Array implemetieren Allgemeine Java-Themen 16
M Array Rang eines Elements Allgemeine Java-Themen 4
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
noah1407 Array Allgemeine Java-Themen 3
D Methoden Teil-Array mit Maximalwert bestimmen Allgemeine Java-Themen 23
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
N zweidimensionalen Array in dreidimensionalen Array speichern Allgemeine Java-Themen 4
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
L die 3 größten Zahlen im Array Allgemeine Java-Themen 1
G jToggleButton in Array/ArrayList Allgemeine Java-Themen 12
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
Willi.We Array sortieren Allgemeine Java-Themen 5
gotzi242 Array Summe bestimmen tipps? Allgemeine Java-Themen 14
H Matrix ohne Array erstellen Allgemeine Java-Themen 9
Aboya Char Array rekursiv vergleichen Allgemeine Java-Themen 15
V4ll3.Wff Array in Java Allgemeine Java-Themen 4
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
H Array Sportschütze Allgemeine Java-Themen 6
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
M Array verändern Allgemeine Java-Themen 1
A JavaFX 2 dimensionales array Allgemeine Java-Themen 1
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
M Java 2D Array für ein Grid erstellen ? Allgemeine Java-Themen 2
H Array mit dem Datentype String[] initializieren Allgemeine Java-Themen 7
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
N Byte Array in Java "dekomprimieren" Allgemeine Java-Themen 3
parrot Array Aufgabe Allgemeine Java-Themen 3
N String Array Eingabe Allgemeine Java-Themen 6
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
N Variablen Array Länge ändern. Allgemeine Java-Themen 8
D Kgv aller Paare aus einem Array mit n integer berechnen Allgemeine Java-Themen 5
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
A Array Problem Allgemeine Java-Themen 8
Drachenbauer Wie stelle ich fest, ob ein Objekt in meinem Array vorkommt? Allgemeine Java-Themen 5
F Datei in String-Array einlesen Allgemeine Java-Themen 8
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
X Größten Werte in meinem Array löschen? Allgemeine Java-Themen 16
E Angabe wie groß Array sein soll und in for-schleifen diesen Array füllen Allgemeine Java-Themen 3
F 3 Dimensionales Array mit Allgemeine Java-Themen 9
M Steueralgorithmus verwandelt Array in Anfangszustand Allgemeine Java-Themen 9
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
D Datentypen 2-3 Baum erstellen mit geordnetem int-array Allgemeine Java-Themen 0
T Objekt in Array packen Allgemeine Java-Themen 6
M Zahlen in Array anordnen Allgemeine Java-Themen 8
M Eclipse Unvollständigen Array ansteuern Allgemeine Java-Themen 2
D Erste Schritte Im Array Werte tauschen Allgemeine Java-Themen 5
Xge For/Array Error: IndexOutOfBounds Allgemeine Java-Themen 4
M Wie kann ich ein int[] Array in einer Methode benutzen? Allgemeine Java-Themen 6
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
J Variablen Array ertellen bei model.put Allgemeine Java-Themen 13
S Eindimensionales Array in zweidimensionales Array speichern Allgemeine Java-Themen 5
R convert 2d array list to 2d array Allgemeine Java-Themen 1
J json Array würfel Spalten durcheinander Allgemeine Java-Themen 9
MiMa Array umbau oder Alternative? Allgemeine Java-Themen 5
L Datentypen 3D Array Allgemeine Java-Themen 3
M 2D Array mit unterschiedlichen Längen erstellen und befüllen Allgemeine Java-Themen 11
Mario1409 Methoden JSON Array von URL Allgemeine Java-Themen 8
E Swing Array mit Bildern in GUI darstellen Allgemeine Java-Themen 2
P Array einer abstrakten Klasse Allgemeine Java-Themen 4
H Zweidimensionales Array - Zellen der Tabelle verbinden Allgemeine Java-Themen 2
M Zweidimensionales Array mit Binärzahlen füllen Allgemeine Java-Themen 8
M Array aus Thread Objekten erstellen Allgemeine Java-Themen 2
kodela Dynamisches Array in einer Klasse Allgemeine Java-Themen 5
G Array ohne Aufzählungszeichen ausgeben Allgemeine Java-Themen 6
J Wie kann ich ein Java Array als Säulendiagramm ausgeben? Allgemeine Java-Themen 2
Z 2D Array Pixels reparieren Allgemeine Java-Themen 2
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
B Polibios Array erweitern Allgemeine Java-Themen 1
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17
J Array-List Bubble-Sort Allgemeine Java-Themen 12
4 Variablen Int-Array Int Zuweisen Allgemeine Java-Themen 7
J Array Allgemeine Java-Themen 8
Z Array mit unterschiedlichen Werten Allgemeine Java-Themen 1
L sortiertes Array im main aufrufen klappt nicht. Allgemeine Java-Themen 3
O Mein JButton Array funktioniert nicht Allgemeine Java-Themen 3
A Mit dem letzten bis zum ersten Wert aus Array rechnen Allgemeine Java-Themen 15
A Vector Strings in Array splitten Allgemeine Java-Themen 6
I Muster in Array suchen Allgemeine Java-Themen 10
RalleYTN Datentypen Herausfinden ob Object ein Array ist ohne den Typen des Arrays zu kennen? Allgemeine Java-Themen 12
S Variablen String[] Array per schleife in int[] einlesen Allgemeine Java-Themen 8
B Zahlen manuell eingeben und in Array Speichern Allgemeine Java-Themen 2
R Wärmeleitung, 3d-Array Allgemeine Java-Themen 2
T Java Array in Methoden Allgemeine Java-Themen 1

Ähnliche Java Themen

Neue Themen


Oben