【问题标题】:Compare row by row in ResultSets, eliminating equals and displaying differences in between rows difference descending在 ResultSets 中逐行比较,消除等于并显示行间差异降序
【发布时间】:2015-02-11 14:23:03
【问题描述】:
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 查询生成两个不同的结果集和不同数量的行。我想编写一个代码来消除相等的行,并根据它们中最少的差异来打印成对的行。不同的列应该用方括号括起来。

有人可以帮忙吗? 任何帮助将不胜感激。

【问题讨论】:

  • 为什么要从结果集中删除相同的行?这样写查询你不会得到类似的行。
  • 我将有两个 Map>,我想将每一行与每一行进行比较。并且只想看到彼此不同的行。不是那些相同的。

标签: java database dictionary resultset


【解决方案1】:

根据您的要求,不需要两个 Map。您可以创建一个类来表示您的表并创建该类的列表,如下所示:

List<SomeClass> list = new ArrayList<SomeClass>();
SomeClass s = null;
 while (rs.next()) {
s = new SomeClass();
s.name =  rs.getString(1);
.......
list.add(s);
    }

然后您可以将比较器添加到此类并决定要对哪些列进行排序。

【讨论】:

  • 我不知道结果的结构会是什么样子。该方法应该是动态的。意味着能够在不同类型的结果集之间显示不同的行。如果我错了,请纠正我。但我认为在创建类然后实现比较器之前,我需要知道期望的输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多