2016-04-02 7 views
0

In diesem Programm muss ich eine Array-Liste aus einer externen Datei in absteigender Reihenfolge anzeigen. Immer wenn ich das Programm ausführe, bekomme ich immer noch die gleiche Reihenfolge der ursprünglichen Liste. Ich brauche nur Hilfe beim absteigenden Auftrag. Ich habe die Collections-Methoden verwendet, um diese Aufgabe zu erledigen, aber ich glaube nicht, dass ich genau verstehe, was passiert, wenn ich Collections anrufe, es spuckt nur die Array-Liste aus, wie sie vom ersten Array-Aufruf eingebracht wurde. Jede Hilfe würde sehr geschätzt werden. Ich habe 4 Sterne am Ende und Anfang des fraglichen Codes platziert.Absteigende Reihenfolge Array-Liste

import java.io.*; 
import java.util.*; 

public class ioStafford { 



    public static void revOrder(String x[]) 
    { 

    } 

    public static void main(String args[]) 
    { 
     try(BufferedReader fr1 = new BufferedReader(new FileReader("myImport.txt"))) 
     { 

      //Create a new file for the reverse output if it doesn't exist 
      File f1 = new File("myOutput.txt"); 

      //Code for new file creation 
      if(!f1.exists()) 
      { 
       f1.createNewFile(); 
      } 

      //Initialize string variables 
      String type; 

      //Array List to hold text file 
      ArrayList<String> names = new ArrayList<String>(); 


      //Add text file contents to the array list 
      while((type = fr1.readLine()) != null) 
      { 
       names.add(type); 
      } 

      //Display array list 
      System.out.println("Below is the list of animals with a comma and in the original order:"); 
      System.out.println(names); 

      ****//Display information in descending order 
      Collections.sort(names, Collections.reverseOrder()); 
      System.out.println(names);**** 


      //Convert array list to string and replace commas 
      String fornames = names.toString().replace("," , " "); 

      //Display altered information 
      System.out.println("Here is the list with the commas removed:"); 
      System.out.println(fornames);            
     } 

     catch(FileNotFoundException e) 
     { 
     System.out.println("Please utilize the file named myImport.txt please!"); 
     } 

     catch(IOException e) 
     { 

     } 
    } 
} 
+2

Können Sie ein kurzes Beispiel nennen (vielleicht 4 Tiere) von dem, was der Code produziert wird? Es ist nichts falsches, das ich mit der Sorte sehe. – KevinO

+1

Zeigen Sie, was 'Namen' enthält. –

+0

Was enthält myImport.txt? Was ist der Output des Programms? Meine Vermutung ist, dass es eine einzelne Zeile enthält, die den Namen mehrerer Tiere enthält, und dass Sie somit eine einzelne Zeichenfolge in Ihrer Liste haben, da der Code die Datei zeilenweise liest und die gesamte Zeile in die Liste einfügt. –

Antwort

-1

Versuchen Sie dieses an einem Ort der

Collections.sort(names, Collections.reverseOrder()); 

: ->

Collections.sort(names, new Comparator<String>() { 

     @Override 
     public int compare(String o1, String o2) { 
      return o2.compareTo(o1); 
     } 
    }); 
+0

Jetzt habe ich Komparatoren verwendet. Meine Frage wäre dann, müssen Sie einen Komparator mit den Sammlungen sortieren? Weil mein Eindruck im Moment ist, dass sie unabhängig voneinander sind. – NStafford

+0

Freund Haben Sie die obige Methode versucht? Ich bin sicher, es wird funktionieren, ich habe das bereits getestet. Und ja, wir müssen den Collections.sort (Liste, Vergleicher) als Parameter vergleichen, wenn wir die Liste der Objekte sortieren müssen. Und wenn wir auf unsere Art sortieren wollen. –

+0

Dieser Code hat nicht funktioniert. Außerdem bin ich nicht wirklich auf der Suche nach einer direkten Antwort, ich möchte immer noch lernen und ehrlich gesagt, ich werde nicht einfach Code kopieren und einfügen, um diese Arbeit zu machen. Danke für die Hilfe – NStafford

Verwandte Themen