java - 使用聚合操作将对象集合复制到另一个集合而不重复

标签 java collections

我有一个名为 items 的项目的 List,我正在使用以下方法将此列表复制到 Set:

 List<Item> items = new ArrayList<>();

    items.add(new Item("Suremen Body Spray", 1900, 45));
    items.add(new Item("HP wireless mouse", 5500, 5));
    items.add(new Item("UWS USB memory stick", 1900, 8));
    items.add(new Item("MTN modem", 1900, 45));
    items.add(new Item("MTN modem", 1900, 45));

    Collection<Item> noDups = new LinkedHashSet<Item>(items); //Copy items to noDups

    //Print the new collection
    noDups.stream()
       .forEach(System.out::println);

当我运行代码时,所有项目都被复制到集合中,如输出所示。

enter image description here

另一个只使用字符串的测试工作得很好:

List<String> names = new ArrayList<>();

    names.add("Eugene Ciurana");
    names.add("Solid Snake");
    names.add("Optimus Prime");
    names.add("Cristiano Ronaldo");
    names.add("Cristiano Ronaldo");


    Collection<String> itemCollection = new HashSet<String>(names);
     itemCollection.stream()
           .forEach(System.out::println);

enter image description here

我可以使用什么方法将列表复制到集合中而不重复?是否有针对此的任何聚合操作,或者我是否必须编写自定义方法?

最佳答案

您需要实现 equalshashCode Item 类中的方法。

关于java - 使用聚合操作将对象集合复制到另一个集合而不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27776088/

相关文章:

java - 关于状态的面向对象编程

java - 在 Java 中将多个集合组合成一个流的最简单方法是什么?

java - ArrayList 和 HashSet 插入性能测试结果让我很困惑

java - 表达式树求值 java.lang.NumberFormatException java

java - 更改具有相同标签/ID 的多个 TextView 中的文本

Java 无法识别 JAR 中的文件

csv - 使用node-csv和meteor-file将CSV导入到集合中

python - 在 Python 中创建唯一对象数组

C# 值类型列表

java - 用于密码验证的正则表达式第一个和最后一个字母不能有符号