循环中的比较

时间:2017-11-14 06:10:06

标签: java sql arrays comparison

我对java很新,遇到一个问题,我需要通过比较我从for循环中得到的每个结果来提取一些数据。

forloop是从sql查询中获得结果& forloop的代码如下:

      for (Map<String, Object> row : results) {
            String data= 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&amp;之间的值。 c24:4:345第二个值不同,即34,因此我需要344345。 同样地,我需要在for循环接收的结果中找到任何这样的数据。

非常感谢您的帮助,并提前致谢。

1 个答案:

答案 0 :(得分:0)

稍微分解一下。

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

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

这非常粗糙,你应该做一些验证并根据你的需要量身定做,但我希望我已经说明了基本的想法。