簡體   English   中英

如何在ArrayList Java中對Arraylist進行排序

[英]How to sort Arraylist inside 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;
}

結果是:

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

不好

這就是我所謂的方法:

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));
   }

將您的SQL更改為

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

我嘗試了Ab Sin的建議,並搜索了如何在MySQL中對數據進行排序,發現可以在GROUP_CONCAT內插入ORDER BY,因此這是我修改后的sql語句:

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

感謝那些回答並幫助我的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM