2017-01-23 5 views
2

Ich bin neu mit Java und habe einige Probleme mit einer Aufgabe. Ich habe Datei txt, die wie folgt aussieht:Java, sortieren und Anzeigen von Daten aus TXT-Datei

John Doe,01-01-1980,Development,Senior Developer 
Susan Smith,07-12-1983,Development,Head of Development 
Ane Key,06-06-1989,BA,Junior Analyst 
Nina Simone,21-09-1979,BA,Head of BA 
Tom Popa,23-02-1982,Development,Developer 
Tyrion Lannyster,17-03-1988,BA,Analyst 

, und ich will es von Abteilungen zu sortieren. zum Beispiel: Mitglieder sind:

[Employee Full Name] - [Employee Age] - [Employee Position] - [Employee Salary(default value x)] 

Deparment: Entwicklung Mitglieder sind: Susan Smith ...... John Doe ...... Tom Popa ...... Abteilung: BA Mitglieder sind: Nina Simone ....... Ane Key ........... Tyrion Lannyster ........

zunächst Datei lesen und machte 2d Array aber kann nicht fortfahren, wie man es richtig sortiert.

public static void main(String[] args) { 

    String csvFile = "C:\\Employees.txt"; 
    BufferedReader br = null; 
    String line = ""; 
    String SplitBy = ","; 

    String myArray[][] = new String[6][5]; 
    int row = 0; 

    try { 
     br = new BufferedReader(new FileReader(csvFile)); 

     while ((line = br.readLine()) != null) { 

      String nums[] = line.split(SplitBy); 

     for (int col = 0; col < nums.length; col++){ 

       String n =nums[col]; 

       myArray[row][col] = n; 
      //  System.out.println(n); 
      }    
      row++; 



     } 

       } 

    catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     if (br != null) { 
      try { 
       br.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 



} 
+0

Haben Sie über Tutorial oder Algorithm darüber gesucht? Dies sollte Ihnen helfen, Ihr Array zu sortieren. – AxelH

Antwort

0

Die Java Collections API ermöglicht es Ihnen, sowie util.Arrays zu sortieren. Sie werden die Array-Methoden für Ihren Code benötigen, aber ziehen Sie in Betracht, in eine Sammlung zu wechseln. Vielleicht eine Liste für den Anfang.

0

Der einfachste Weg wäre, den Inhalt der Zeilen in Java Beans zu setzen und sie dann mit sort zu sortieren.

public User { 
    private String name; 
    // ... all the fields with getters and setters 
} 

Dann Ihren Code in etwa so anzupassen:

// create a nice List for the users. 
List<User> userList = new ArrayList<>(); 

while ((line = br.readLine()) != null) { 
      User user = new User(); 
      String nums[] = line.split(SplitBy); 
      user.setName(nums[0]); 
      // create nice method to convert String to Date 
      user.setDate(convertStringToDate(nums[1])); 
      // add the user to the list 
      userList.add(user); 

} 

// Then finally sort the data according to the desired field. 
Arrays.sort(userList, (a,b) -> a.name.compareTo(b.name)); 
+0

Danke für die Scherung Beispiel.Dieser Teil wurde hinzugefügt und bearbeitet: –

+0

ArrayList Entwicklung = new ArrayList <>(); \t \t ArrayList BA = neue ArrayList <>(); \t \t \t \t für (Benutzer Benutzer: userlist) { \t \t \t if (user.getDepartment() gleich ("Development").) { \t \t \t \t \t \t \t \t Development.add (Benutzer) ; \t \t \t} \t \t \t else { \t \t \t \t BA.add (Benutzer); \t \t \t} \t \t} \t \t \t \t System.out.println ("Abteilung Entwicklung:"); \t \t für (Benutzer Benutzer: Entwicklung) { \t \t \t System.out.println ("\ t "+ user.getName() +"" + user.getPosition()); \t \t \t} \t \t System.out.println ("Abteilung Ba:"); \t \t für (Benutzer-Benutzer: BA) { \t \t \t System.out.println ("\ t "+ user.getName() +"" + user.getPosition()); –

+0

kein Problem Kumpel! –

0

den Code Lösung Providing hier würden Sie es nicht helfen, zu lernen. Aber ich kann Ihnen Hinweise geben, wie es weitergeht. Verwenden von Array wird nicht wirklich empfohlen.

Die einfache, aber schmutzige Art und Weise -

Statt zweidimensionaler Anordnung, verwendet ein TreeMap<String, String[]> wo Schlüssel die Abteilung mit dem Namen und Wert ist die eindimensionale Matrix der individuellen Details verketteten ist. Da wir TreeMap verwenden, wird das Ergebnis natürlich basierend auf Abteilung gefolgt von Name der Person sortiert. Schleife durch die entrySet und drucke alle Ergebnisse.

Right way -

definieren neues Objekt Person mit allen Mitgliedern erforderlich. Implementieren Sie die Schnittstelle Comparable. Lesen Sie alle Eingabedaten, füllen Sie das gleiche in Person Objekt, fügen Sie jedes solche Objekte in einem ArrayList hinzu und verwenden Sie die Sortiermethode von Collections API, um alle Objekte zu sortieren. Alternativ können Sie den Comparator Weg anpassen.

Verwandte Themen