【问题标题】:How to remove Duplicates from ResultSet in java如何从java中的ResultSet中删除重复项
【发布时间】:2026-01-17 19:30:01
【问题描述】:

在数据库中的 mapRule 列包含

  1. 脚趾部分深度烧伤(疾病)
  2. 脚趾二度烧伤(障碍)
  3. 足部浅表部分厚度烧伤(障碍)
  4. 脚趾二度烧伤(障碍)
  5. 脚趾部分深度烧伤(疾病)
  6. 脚趾部分深度烧伤(疾病)

我必须删除重复项并需要这样的输出

  1. 脚趾部分深度烧伤(疾病)
  2. 脚趾二度烧伤(障碍)
  3. 足部浅表部分厚度烧伤(障碍)

如何获得这个?我正在从 mysql 获取数据,我的代码是

代码

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

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

【问题讨论】:

  • 将结果放入Set&lt;String&gt;
  • 一个更好的主意:让数据库以正确的顺序只返回不同的值。这是他的工作。
  • 最简单的方法是在 sql 查询级别进行。
  • @gonzo colud 你解释一下怎么做?
  • @Kayaman 我不应该使用 sql 查询,这是一个问题,我很困惑

标签: java jsp jdbc duplicates resultset


【解决方案1】:

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

Set 是一个自动为您处理重复项的集合。因此,不要将结果保存到String[],然后删除重复项,而是尝试将它们保存到Set&lt;String&gt;

   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 的情况下执行此操作,并且只需在一个 String[] 中获得所有结果后使用 Stream。这是一个快速的方法:

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

【讨论】:

  • @bala 您使用add() 方法将元素添加到集合中。请看示例。