Сравнение строк за строкой в ResultSets, устранение равных и отображение различий между строками по убыванию

1
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-запроса, генерирующих два разных набора результатов и различное количество строк. Я хотел бы написать код, который бы устранил строки, которые равны, и будет печатать строки в паре в зависимости от наименьшего количества различий в них. Столбы, которые отличаются друг от друга, должны быть скошены в квадратных скобках.

Может ли кто-нибудь помочь с этим? Любая помощь будет принята с благодарностью.

  • 1
    почему вы хотите исключить идентичные строки из набора результатов? написать запрос как таковой, вы не получите аналогичные строки.
  • 0
    У меня будет две Map <String, List <Object >>, где я хотел бы сравнить каждую строку с каждой строкой. И хотелось бы видеть строки, которые отличаются друг от друга. Не те, которые одинаковы.
Теги:
database
dictionary
resultset

1 ответ

0

Для вашего требования нет необходимости в двух Картах. Вы можете создать класс для представления своей таблицы и создать список этого класса, например:

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

Затем вы можете добавить компаратор к этому классу и решить, какие столбцы вы хотите отсортировать.

  • 0
    Я не знаю, как будет выглядеть структура результата. Метод должен быть динамическим. Имеется в виду возможность отображения разных строк между различными типами результирующих наборов. Пожалуйста, поправьте меня, если я ошибаюсь. Но я думаю, что мне нужно знать, какой результат ожидать, прежде чем создавать класс и затем реализовывать компаратор.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню