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

ojo*_*ifu 1 java collections

我有一个List名为的项目,并将items此列表复制到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);
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

使用Strings的另一个测试工作得很好:

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);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

Ada*_*ion 5

您需要在类中实现equalshashCode方法Item.