Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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
Java for循环中的比较_Java_Sql_Arrays_Comparison - Fatal编程技术网

Java for循环中的比较

Java for循环中的比较,java,sql,arrays,comparison,Java,Sql,Arrays,Comparison,我对java相当陌生,在从事一个项目时遇到了一个问题,我需要通过比较从for循环中得到的每个结果来提取一些数据 forloop用于从sql查询中获取结果&forloop的代码如下所示: for (Map<String, Object> row : results) { String data= row.get("getdata").toString(); } for(映射行:结果){ 字符串数据=row.get(“getd

我对java相当陌生,在从事一个项目时遇到了一个问题,我需要通过比较从for循环中得到的每个结果来提取一些数据

forloop用于从sql查询中获取结果&forloop的代码如下所示:

      for (Map<String, Object> row : results) {
            String data= row.get("getdata").toString();
            }
for(映射行:结果){
字符串数据=row.get(“getdata”).toString();
}
当循环运行2次时,从中接收到的数据有点像:

a12:1:123;b23:2:234;c24:3:344

a12:1:123;b23:2:234;c24:4:345

当在上述相同第一个值的数据中,
之后的第二个值不同时:“
我想得到第三个值,例如
c24:3:344
c24:4:345
之间,第二个值不同,即
3
4
,因此我需要得到
344
345
。 类似地,我需要在for循环接收的结果中找到任何这样的数据

非常感谢您的帮助。

请详细说明

您有一个循环,在一个结构上迭代,需要将每一行与前一行进行比较。每次迭代,您将获得当前行并将其与前一行进行比较,然后将前一行设置为下一次迭代的当前行

prevRowData = null;
for(Map<String, Object> row : results) {
    String currRowData = row.get("getdata").toString();
    if(prevRowData != null) {
        compareRows(currRowData, prevRowData);
    }
    prevRowData = currRowData;
}

private void compareRows(String currRowData, String prevRowData) {
    // split the row data into an array on the colon/semi-colon delimiter 
    // to make it easier to compare each portion
    String[] currRow = currRowData.split(":|;");
    String[] prevRow = prevRowData.split(":|;");

    // if the first part is equal and the second part is not equal
    if(currRow[0].equals(prevRow[0] && !currRow[1].equals(prevRow[1])) {
        // print out the third part of each row (or return it or whatever)
        System.out.printf("currRow: %s, prevRow: %s", currRow[2], prevRow[2]);
    }
}
prewrowdata=null;
用于(地图行:结果){
字符串currRowData=row.get(“getdata”).toString();
if(prevRowData!=null){
compareRows(CurrowData、PrerowData);
}
prevRowData=currRowData;
}
私有void compareRows(字符串currowData、字符串prevRowData){
//将行数据拆分为冒号/分号分隔符上的数组
//使比较每个部分更容易
字符串[]currRow=currowdata.split(“:;”);
字符串[]prevRow=prevRowData.split(“:|;”);
//如果第一部分相等,第二部分不相等
如果(currRow[0].equals(prevRow[0]&&!currRow[1].equals(prevRow[1])){
//打印出每行的第三部分(或返回它或其他)
System.out.printf(“当前行:%s,当前行:%s”,当前行[2],当前行[2]);
}
}

这是一个相当粗糙的问题,您应该进行一些验证,并根据您的需要对其进行调整,但我希望我已经说明了基本思想。

我对这个问题投了否决票,因为您询问的是一个bug,而没有向我们显示代码。没有具体的代码,我们只能猜测问题可能是什么,这对您或未来的读者都没有用处。如果您可以通过您的问题向我们展示您的问题的一部分,此否决票可能会被撤回。您能解释一下此中的prevRow和currRow是什么,以及我们将prevRowData的值存储在哪里吗?如果这是一个愚蠢的问题,我很抱歉,因为循环在结构
currRow
上迭代的是当前行,即我们从此迭代中的映射。
prevRow
是我们在上一次迭代中从映射中提取的行。我们存储上一行,以便将其与当前行进行比较。