在 ResultSets 中逐行比较,消除相等并显示行间差异降序的差异
Compare row by row in ResultSets, eliminating equals and displaying differences in between rows difference descending
private Map<String, List<Object>> resultSetToArrayList(ResultSet rs) throws SQLException {
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
Map<String, List<Object>> map = new HashMap<>(columns);
for (int i = 1; i <= columns; ++i) {
map.put(md.getColumnName(i), new ArrayList<>());
}
while (rs.next()) {
for (int i = 1; i <= columns; ++i) {
map.get(md.getColumnName(i)).add(rs.getObject(i));
}
}
return map; }
我正在使用上面的代码将我的结果集的结果存储到一个集合中。有两个 SQL 查询生成两个不同的结果集和不同的行数。我想编写一个代码来消除相等的行,并根据它们之间的最少差异打印成对的行。不同的列应括在方括号中。
有人可以帮忙吗?
任何帮助将不胜感激。
根据您的要求,不需要两个地图。您可以创建一个 class 来代表您的 table 并创建一个 class 的列表,如下所示:
List<SomeClass> list = new ArrayList<SomeClass>();
SomeClass s = null;
while (rs.next()) {
s = new SomeClass();
s.name = rs.getString(1);
.......
list.add(s);
}
然后您可以向此添加比较器 class 并决定要对哪些列进行排序。
private Map<String, List<Object>> resultSetToArrayList(ResultSet rs) throws SQLException {
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
Map<String, List<Object>> map = new HashMap<>(columns);
for (int i = 1; i <= columns; ++i) {
map.put(md.getColumnName(i), new ArrayList<>());
}
while (rs.next()) {
for (int i = 1; i <= columns; ++i) {
map.get(md.getColumnName(i)).add(rs.getObject(i));
}
}
return map; }
我正在使用上面的代码将我的结果集的结果存储到一个集合中。有两个 SQL 查询生成两个不同的结果集和不同的行数。我想编写一个代码来消除相等的行,并根据它们之间的最少差异打印成对的行。不同的列应括在方括号中。
有人可以帮忙吗? 任何帮助将不胜感激。
根据您的要求,不需要两个地图。您可以创建一个 class 来代表您的 table 并创建一个 class 的列表,如下所示:
List<SomeClass> list = new ArrayList<SomeClass>();
SomeClass s = null;
while (rs.next()) {
s = new SomeClass();
s.name = rs.getString(1);
.......
list.add(s);
}
然后您可以向此添加比较器 class 并决定要对哪些列进行排序。