LinkedHashSet删除重复对象

我有一个简单的问题要问,我有Product类,其中的字段如下:

private Integer id;

private String category;

private String symbol;

private String desc;

private Double price;

private Integer quantity;

我想根据ID从LinkedHasSet中删除重复项,例如,具有相同ID但数量不同的产品将被添加到集合中,我想删除(更新)具有相同ID的产品,并且它将通过我的对象的唯一ID进行操作要做到这一点?

例如,产品:id = 1,类别= CCTV,符号= TVC-DS,desc =简易摄像机,价格= 100.00, 产品:id =

1,类别= CCTV,符号= TVC-DS,desc =简易摄像机,价格= 100.00,

不会添加到集合中

我的代码:

    public void setList(Set<Product> list) {

if(list.isEmpty())

this.list = list;

else {

this.list.addAll(list);

Iterator<Product> it = this.list.iterator();

for(Product p : list) {

while(it.hasNext()) {

if(it.next().getId() != p.getId())

it.remove();

this.list.add(p);

}

}

}

}

回答:

所有Set实现均删除重复项,LinkedHashSet也不例外。

根据其equals()方法,重复的定义是两个彼此相等的对象。如果您尚未覆盖equals您的Product类,则只有相同的引用才被视为相等-

带有相同值的不同实例将不被视为相等。

因此,您需要为您的类添加更具体的实现equals(和hashcode)。有关一些示例和指南,请参阅《在Java中覆盖等于和哈希码》。(请注意,您还 重写hashcode,否则您的类在哈希集中将无法正确运行。)

以上是 LinkedHashSet删除重复对象 的全部内容, 来源链接: utcz.com/qa/410370.html

回到顶部