如何在Arraylist java中对Arraylist进行排序
我在一个列表中有一个列表,我在对列表中的字符串时间戳排序时遇到问题。以下是在数据库中检索时间戳的方法:如何在Arraylist java中对Arraylist进行排序,java,mysql,Java,Mysql,我在一个列表中有一个列表,我在对列表中的字符串时间戳排序时遇到问题。以下是在数据库中检索时间戳的方法: 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");
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;
}
这不正常
我就是这样称呼这个方法的:
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));
}
for(int i=0;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中对数据进行排序,发现可以在组_CONCAT中插入ORDER,因此这是我修订的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
感谢那些回复和帮助我的人。我没有看到任何排序尝试。为什么不在SQL级别进行排序呢?谢谢,但正如您可以看到的那样,时间戳不符合顺序11:31是在17:02之后。我正在使用它进行超时计算。
for(int I=0;I
看起来非常错误-这意味着你在做sql 4次是的,因为我正在调用列表中的每个索引。但是每当上面的代码中出现data.getLogs()
时,我就表示您正在调用该方法。只需调用它一次并将值存储到一个变量,我尝试了,但我没有在方法中得到值,而是它给出了索引。。。。
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