我对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
第二个值不同,即3
和4
,因此我需要344
和345
。
同样地,我需要在for循环接收的结果中找到任何这样的数据。
非常感谢您的帮助,并提前致谢。
答案 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]);
}
}
这非常粗糙,你应该做一些验证并根据你的需要量身定做,但我希望我已经说明了基本的想法。