2015-12-21 2 views
-4

В колонке mapRule база данных содержитКак удалить дубликаты из ResultSet в Java

  1. Deep неполную толщину ожог пальца (ы) (расстройство)
  2. Вторая степень ожога пальца ноги (расстройства)
  3. Поверхностный частичный толщина ожог стопы (расстройство)
  4. Вторая степень ожога пальца ноги (расстройство)
  5. глубокий неполную толщину ожог пальца (ы) (расстройство)
  6. Deep частичная толщина ожог пальца (ы) (расстройство)

Я должен удалить дубликаты и нужен выход, как этот

  1. глубокой частичной толщины ожог пальца (ы) (расстройство)
  2. Второй степень ожога пальца ноги (расстройство)
  3. Поверхностный частичная толщина ожог стопы (расстройства)

, как получить это? я выборки данных из тузда & моего кода

КОД

<% 
      pstm = Con.prepareStatement(selectsql); 
      pstm.setString(1, snomedid); 
      resultSet = pstm.executeQuery(); 
      while (resultSet.next()) { 
       String[] pipe = resultSet.getString("mapRule").split("\\|"); 
       if (pipe.length > 1) { 
     %> 

    <p><%=pipe[1]%></p> 
    <% 
     } 
     } 
    %> 

Как удалить дубликаты из результирующих?

+0

Поместите результаты в 'Set '. – gonzo

+5

Еще лучшая идея: заставить базу данных возвращать только отдельные значения в правильном порядке. Это его работа. – Kayaman

+1

Простейший способ - сделать это на уровне запросов sql. – developerwjk

ответ

0

Вы должны действительно обрабатывать это на стороне базы данных с помощью своего запроса, но вот краткий пример и краткое описание на Set.

A Set - это коллекция, которая автоматически обрабатывает дубликаты. Поэтому вместо сохранения результатов на String[], удалив дубликаты, попробуйте сохранить их вместо Set<String>.

String[] results = {"a", "b", "a"}; //This is just dummy data 
    Set<String> resultsInSet = new HashSet<>(); 
    for (String result: results){ 
     resultsInSet.add(result); //This is how you add a new element to the set 
    } 
    //You can loop through a set just like an array 
    for (String result: resultsInSet){ 
     System.out.println(result); 
    } 
    System.out.println(resultsInSet); //And print the whole set like this 

Выход:

a 
b 
[a, b] 

Если вы используете новенький Java 8, то вы можете даже сделать это без Sets и просто использовать Stream после вы получите все ваши результаты в одном String[]. Вот быстрый способ сделать это:

String[] results = {"a", "b", "a"}; //This is just dummy data 
    String[] uniqueResults = Arrays.stream(results).distinct().toArray(String[]::new); 
    System.out.println(Arrays.toString(uniqueResults)); 
+0

в моем коде, как обновить эту строку набора? –

+0

@bala вы добавляете элемент в набор с помощью метода 'add()'. Посмотрите пример. – gonzo

Смежные вопросы