Sortieren von double Arrays

  • Themenstarter Themenstarter Ticki
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

Ticki

Gast
Hallo

Habe hier ein kleines Problem,komme einfach nicht weiter.
Möchte ein double Array sortieren.
Für int habe ich mir was zurecht gebastellt,hier gibt
es ja Beispiele genug.

Wollte das umschreiben für double Werte,geht
aber so nicht.
Könnt ihr mir helfen.

Danke...


Code:
import java.util.Arrays;
import java.util.Comparator;

public class Main {
    
    public Main() {
    }
    
    public static void main(String[] args) {
    
     int[][] iarray = new int[][]{{2,8},{9,7},{7,5},{1,2}}; 
     //double[][] darray = new double[][]{{2.4,8.7},{9.1,7.2},{7.3,5.4},{1.2,2.8}}; 
     
     for ( int[] zeile : iarray)
     System.out.println("Zeile: " + Arrays.toString(zeile)); 
     System.out.println("##Sortiert##");
     Arrays.sort(iarray, new Comparator() { public int compare(Object a, Object b) {
    //   Arrays.sort(darray, new Comparator() { public double compare(Object a, Object b) {    
    //     return ((double[])a)[1] - ((double[])b)[1];
       return ((int[])a)[1] - ((int[])b)[1];
       }
     }
   );
    for ( int[] zeile : iarray)
    System.out.println("Zeile: " + Arrays.toString(zeile));   
    }
 }
 
das könnte daran liegen, das der rückgabetyp der compare funktion int sein muss, auch bei double.
caste an der stelle einfach mit
Code:
Arrays.sort(darray, new Comparator() { public int compare(Object a, Object b) {   
    //     return (int)(((double[])a)[1] - ((double[])b)[1]);

#edit un bringe bitte das nächste mal ein bischen mehr informationen zum konkreten fehler der aufgetreten ist!
Wollte das umschreiben für double Werte,geht
aber so nicht.
:noe:
 
das funktioniert so nicht!!!

beispiel
(int) (0.25f-0.15f) = 0 ! => gleich groß -> wird nicht in die liste aufgenommen.

[edit]: ist auf jedenfall bei zb nem treeset so [/edit]

multiplizier jeden wert nochmal so, dass das ergebnis von f1-f2 größer oder gleich 1 bzw -1 ist.
 
warum gross etwas berechnen...
compare ist es egal welche zahl rauskommt. wichtig ist 0, > 0 oder < 0
Code:
public int compare( Object o1, Object o2 ) {
                double[] a = (double[])o1;
                double[] a2 = (double[])o2;
                if(a[1] == a2[1]) {
                    return 0;
                }
                return a[1] < a2[1] ? -1 : 1;
            }
z.b
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben