如何从java中的ResultSet中删除重复项

时间:2015-12-21 21:05:36

标签: java jsp jdbc duplicates resultset

在数据库mapRule列中包含

  1. 脚趾深度部分烧伤(紊乱)
  2. 脚趾二次烧伤(紊乱)
  3. 足部浅表部分烧伤(紊乱)
  4. 脚趾二次烧伤(紊乱)
  5. 脚趾深度部分烧伤(紊乱)
  6. 脚趾深度部分烧伤(紊乱)
  7. 我必须删除重复项并需要像这样的输出

    1. 脚趾深度部分烧伤(紊乱)
    2. 脚趾二次烧伤(紊乱)
    3. 足部浅表部分烧伤(紊乱)
    4. 怎么弄这个?我从mysql&获取数据我的代码是

      CODE

      <%
                  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>
          <%
              }
              }
          %>
      

      如何从结果集中删除重复项?

1 个答案:

答案 0 :(得分:0)

您应该在数据库端使用您的查询处理此问题,但这是一个简单的示例和Set的简短说明。

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));