[英]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.