【问题标题】:sort an unmodifiable collection, remove duplicated according to element of collection对不可修改的集合进行排序,根据集合元素删除重复项
【发布时间】:2015-09-11 07:16:26
【问题描述】:

所以我有这个获取一些产品实例的代码,它会给出一个产品 ID 和其他一些东西。现在由于某些原因,数据库返回了一些重复的信息,我需要删除重复的信息并根据产品 ID 按字母顺序对集合进行排序。产品 id 值是 alex、robert、stephanie 等名称。我搜索了一下,但仍然不知道如何解决,可能是因为我是 Java 新手,所以我想请问您是否可以帮助我获得直接答案解决问题。

public static Collection<Product> getProductInstances() {
    return Collections.unmodifiableCollection(INSTANCES.values());
}

public interface Product {    
    public String getProductId();
}

【问题讨论】:

  • 将集合复制到 SortedSet 中是最简单的,例如树集。这将自动为您处理重复。
  • @AndyTurner 评论并非旨在提供解决方案。写一个正确的答案
  • 您应该先修复数据库查询,然后再尝试在代码中修复它...
  • 我认为数据库中有重复的信息。这意味着修复输入源或如何处理输入。但就我而言,这有点复杂。是否可以从这里修复它?

标签: java string sorting


【解决方案1】:

首先,您不能对不可修改的集合进行排序(修改)。

但是,给定一个集合,您可以获得一个排序和重复数据集,如下所示:

Set<String> set = new TreeSet<>(Comparator.comparing(Product::getId));
set.addAll(getProductInstances());

对集合的迭代将按 id 顺序进行,并且作为集合将没有重复项 - TreeSet 将“相等”定义为比较相等的元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 2010-11-15
    • 2022-01-11
    • 2017-08-29
    • 2022-01-06
    • 2015-12-12
    相关资源
    最近更新 更多