2016-04-22 12 views
0

So hatte ich eine Datei mit Trennzeichen, die ich in ein Array eingelesen habe.Sortieren eines Arrays von Objekten durch zwei Doppel

array [0] ist die BoxID (double)

und

array [1] ist die MovieID (double)

Ich habe keine Ahnung, wie ich in der Lage sein würde meine zu sortieren Array von diesen beiden Doppel. Irgendwelche Kommentare? Ich habe versucht, andere Fragen auf dieser Website zu sehen, aber ich bin einfach von ihnen verwirrt worden. Ich bin gerade in meiner ersten Programmierklasse.

Movies[] newMasterMovies = new Movies[200]; 

    int newMasterCount = 0; 
    int masterCount = 0; 
    int updateCount = 0; 

    while (updateCount < updateTotalCounter || masterCount < masterTotalCounter) { 

     String updateCompare = updateMovies[updateCount].getBoxID() + updateMovies[updateCount].getMovieID(); 
     String masterCompare = masterMovies[masterCount].getBoxID() + masterMovies[masterCount].getMovieID(); 
     int compare = updateCompare.compareTo(masterCompare); 

     if (compare > 0) { 
      newMasterMovies[newMasterCount] = masterMovies[masterCount]; 
      masterCount++; 
      newMasterCount++; 
     } 

     if (updateMovies[updateCount].getActionCode() == "A") { 
      newMasterMovies[newMasterCount] = updateMovies[updateCount]; 
      updateCount++; 
      newMasterCount++; 
     } 

     if (updateMovies[updateCount].getActionCode() == "D") { 
      updateCount++; 
      masterCount++; 
     } 

     if (updateMovies[updateCount].getActionCode() == "C") { 
      newMasterMovies[newMasterCount] = updateMovies[updateCount]; 
      updateCount++; 
      newMasterCount++; 
      masterCount++; 
     } 

    } 

Das ist, was mein Array aussieht, dass ich versuche zu sortieren. Ich habe versucht, eine Auswahl zu sortieren, bin aber verwirrt, da ich nach zwei Eigenschaften sortieren möchte, nicht nur nach einer.

+2

Willkommen bei Stack Overflow! Wir helfen Ihnen gerne, aber wir müssen mehr von Ihrem Code sehen. Was versuchst du zu erreichen? Was hast du bisher versucht? Welchen Fehler siehst du? – nhouser9

+1

Wie möchten Sie diese Felder bestellen? Erstelle ein Pojo und sortiere das Array. –

Antwort

1

Dieser Kerl hier tut ein Wunder

Arrays.sort(iArr); 

Hier ist, was es tun kann: Hier ist ein Beispielcode

public class ArrayDemo { 

public static void main(String[] args) { 

    // initializing unsorted int array 
    int iArr[] = {2, 1, 9, 6, 4}; 

    // let us print all the elements available in list 
    for (int number : iArr) { 
    System.out.println("Number = " + number); 
    } 

    // sorting array 
    Arrays.sort(iArr); 

    // let us print all the elements available in list 
    System.out.println("The sorted int array is:"); 
    for (int number : iArr) { 
    System.out.println("Number = " + number); 
    } 
    } 
} 

Und die Ergebnisse wie diese

Zahl sein sollte = 2

Nummer = 1

Number = 9

Number = 6

Number = 4

Die sortierte int array ist:

Number = 1

Nummer = 2

Number = 4

Number = 6

Number = 9

hofft, dass dies einige

0

hilft einfach sortieren Sie Ihre Movies[] Sie Arrays.sort und verwenden Sie eine benutzerdefinierte Comparator verwenden können. Wie folgt aus:

Arrays.sort(masterMovies, new Comparator<Movies>() { 
     @Override 
     public int compare(Movies o1, Movies o2) { 
      // compare boxID 
      // compare movieID 
      return 0; // return result 
     } 
    }); 

Arrays.sort verwenden merge sort oder binary insertion sort die beide stabiler und schneller als selection sort.

Wenn Sie darauf bestehen, Ihre Auswahl zu sortieren, versuchen Sie, Ihre Klasse zu bearbeiten, Comparable Schnittstelle wie folgt zu implementieren: class Movies implements Comparable<Movies>. Und implementieren compareTo Methode wie folgt:

@Override 
    public int compareTo(Movies o) { 
     // compare boxID 
     // compare movieID 
     return 0; // return result 
    } 

und ändern Sie Ihre alten vergleichen Code int compare = updateCompare.compareTo(masterCompare);-int compare=updateMovies[updateCount].compareTo(masterMovies[masterCount]);, dann gehen Sie auf.

Verwandte Themen