2017-10-18 10 views
0

Sortierung Ich habe eine Liste in einer Liste und ich habe Probleme beim Sortieren der Zeichenfolge Zeitstempel in der Liste. Hier ist die Methode, die die Zeitstempel in der Datenbank abruft:Wie Arraylist in Arraylist Java

public static List<List<String>> getLogs(){ 
    sql = new String("SELECT EmpID, ValidDate, GROUP_CONCAT(ValidTime) AS logTime FROM logs WHERE Processed = 0 GROUP BY EmpID, ValidDate"); 
    List<List<String>> values = new ArrayList<>(); 
    List<String> id = new ArrayList<>(); 
    List<String> valDate = new ArrayList<>(); 
    List<String> logs = new ArrayList<>(); 

    try{ 
     stmt = data.createStatement(); 
     rs = stmt.executeQuery(sql); 

     while(rs.next()){ 
      id.add(rs.getString("EmpID")); 
      valDate.add(String.valueOf(rs.getDate("ValidDate"))); 
      logs.add(rs.getString("logTime")); 
     } 
    }catch(SQLException ex){ 
     ex.printStackTrace(); 
    } 
    values.add(id); 
    values.add(valDate); 
    values.add(logs); 

    return values; 
} 

das ist das Ergebnis:

2017-07-22 17:02:00,11:31:00,12:14:00 
2017-07-22 11:54:00,11:01:00,17:01:00 
2017-07-22 17:01:00,11:30:00,12:29:00 

Es ist nicht in Ordnung. Diese

ist, wie ich diese Methode aufrufen:

for(int i = 0; i < data.getLogs().get(0).size();i++){ 
System.out.println(data.getLogs().get(0).get(i)+" "+data.getLogs().get(1).get(i)+" "+data.getLogs().get(2).get(i)); 
    } 
+1

Ich sehe keinen Sortierversuch. – shmosel

+3

warum nicht auf SQL-Ebene tun –

+0

Danke, aber wie Sie sehen können, sind die Timestamp nicht in Ordnung um 11:31 ist nach 17.02. Ich benutze es für die Überstundenberechnung. – SilverRay

Antwort

1

ändern SQL

sql = new String("SELECT EmpID, ValidDate, GROUP_CONCAT(ValidTime) AS logTime 
     FROM logs WHERE Processed = 0 GROUP BY EmpID, ValidDate ORDER BY ValidDate"); 
+0

@smossel Danke für die Bearbeitung –

+0

Ich habe Ihre Antwort versucht, aber sie sind immer noch nicht in der richtigen Reihenfolge ... – SilverRay

+0

'für (int i = 0; i

0

habe ich versucht, die Beratung von Ab Sin und suchen Sie auf, wie die Daten in MySQL sortieren und festgestellt, dass seine möglich ORDER BY einzufügen innerhalb der GROUP_CONCAT so ist meine überarbeitete sQL-Anweisung:

SELECT EmpID, 
     ValidDate, 
     GROUP_CONCAT(ValidTime ORDER BY ValidTime ASC) AS logTime 
FROM logs 
WHERE Processed = 0 
GROUP BY EmpID, ValidDate ORDER BY ValidDate ASC 

Vielen Dank für tho se wer antwortete und half mir.