在 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 并决定要对哪些列进行排序。