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-запроса, генерирующих два разных набора результатов и различное количество строк. Я хотел бы написать код, который бы устранил строки, которые равны, и будет печатать строки в паре в зависимости от наименьшего количества различий в них. Столбы, которые отличаются друг от друга, должны быть скошены в квадратных скобках.
Может ли кто-нибудь помочь с этим? Любая помощь будет принята с благодарностью.
Для вашего требования нет необходимости в двух Картах. Вы можете создать класс для представления своей таблицы и создать список этого класса, например:
List<SomeClass> list = new ArrayList<SomeClass>();
SomeClass s = null;
while (rs.next()) {
s = new SomeClass();
s.name = rs.getString(1);
.......
list.add(s);
}
Затем вы можете добавить компаратор к этому классу и решить, какие столбцы вы хотите отсортировать.