Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何避免集合中的重复<;对象>;_Java_Set - Fatal编程技术网

Java 如何避免集合中的重复<;对象>;

Java 如何避免集合中的重复<;对象>;,java,set,Java,Set,我有一套: final Set<Object> partialResults = new LinkedHashSet<Object>(); final Set partialResults=new LinkedHashSet(); 设置如下值: partialResults.add(createResultList(data.getProduct(), data.getMaterialId())); private List<Object> create

我有一套:

final Set<Object> partialResults = new LinkedHashSet<Object>();
final Set partialResults=new LinkedHashSet();
设置如下值:

partialResults.add(createResultList(data.getProduct(), data.getMaterialId()));

private List<Object> createResultList(final ProductModel product, final String code)
    {
        final List<Object> result = new ArrayList<Object>();
        result.add(product);
        result.add(code);
        return result;
    }
partialResults.add(createResultList(data.getProduct(),data.getMaterialId());
私有列表createResultList(最终产品模型产品,最终字符串代码)
{
最终列表结果=新建ArrayList();
结果:添加(产品);
结果.添加(代码);
返回结果;
}

增加重复产品,;如何避免添加重复记录?

您的
集合
包含
数组列表
实例,每个实例都包含一个
ProductModel
实例和一个
字符串
实例。为了让
LinkedHashSet
认为两个元素相等,它们必须具有相同的
hashCode
,并且
equals
方法在应用于这两个元素时应返回true


对于
ArrayList
hashCode
equals
取决于
ArrayList
元素的
hashCode
equals
String
正确覆盖
hashCode
equals
,这意味着您可能没有正确覆盖
ProductModel
hashCode
equals

按照Eran的建议或(查看手头的用例)将逻辑更改为使用
HashMap
而不是
Set
,使用
code
字符串作为键,使用
ProductModel
对象作为值。这样,您就可以使用map.values()获得一组独特的
ProductModels
并且省去了在
ProductModel

中覆盖
hashCode
equals
的麻烦。我无法在ProductModel cz中覆盖它,因为它是从xml文件中自动生成的类,以任何其他方式从partialResults中删除重复记录。因此,代码不是ProductModel的唯一id-不同的ProductModels可以使用相同的代码?