Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Arraylist java中对Arraylist进行排序_Java_Mysql - Fatal编程技术网

如何在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