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

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

+1

Почему вы хотите удалить идентичные строки из набора результатов? пишите запрос как таковой, вы не получите похожие строки. – sumitsabhnani

+0

У меня будет две карты >, где я бы хотел сравнить каждую строку с каждой строкой. И хотелось бы видеть ряды, которые отличаются друг от друга. Не те, которые одинаковы. –

ответ

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

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