gpt4 book ai didi

Java 8 流 : Converting a list of objects to a set of objects

转载 作者:行者123 更新时间:2023-11-29 10:09:12 25 4
gpt4 key购买 nike

我正在尝试将对象列表转换为一组对象,以确保集合中不存在重复项。我正在尝试使用 Streams。

我有一个类产品如下:

class Product{  
int id;
String name;
float price;
public Product(int id, String name, float price) {
this.id = id;
this.name = name;
this.price = price;
}
public String getName()
{
return this.name;
}
public int getId()
{
return this.id;

}
public float getPrice()
{
return this.price;
}
public void setName(String name)
{
this.name = name;
}
public void setId(int id)
{
this.id = id;
}
public void getPrice(float price)
{
this.price = price;
}
}

我正在尝试类似的东西:

   List<Product> productsList = new ArrayList<Product>();  

//Adding Products
productsList.add(new Product(1,"HP Laptop",25000f));
productsList.add(new Product(2,"Dell Laptop",30000f));
productsList.add(new Product(3,"Lenevo Laptop",28000f));
productsList.add(new Product(4,"Sony Laptop",28000f));
productsList.add(new Product(5,"Apple Laptop",90000f));
productsList.add(new Product(5,"Apple Laptop",90000f));

我希望将结果存储为 Set:

 Set<Product> productPriceList=productsList.stream()
.map(p->new Product(p.getId,p.getName,p.getPrice))
.collect(Collectors.toSet());

但这对我不起作用。任何建议将不胜感激!

最佳答案

你的代码几乎可以编译,你只是错过了 p.getId 等的括号:

Set<Product> productPriceList = productsList.stream()
.map(p -> new Product(p.getId(), p.getName(), p.getPrice()))
.collect(Collectors.toSet());

但是,如果您希望集合正常工作,您的Product 必须覆盖equalshashCode。可以看到this question为什么。

关于Java 8 流 : Converting a list of objects to a set of objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50604761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com