从ArrayList中删除重复的对象

时间:2019-07-17 06:28:56

标签: arraylist java-8 java-stream

我有一个对象列表,对象包含名称和值。但是列表包含重复的对象。我想从列表中删除重复的对象。

我试图使用Java流从列表中删除重复的对象。

我正在使用以下代码:

List<NameValueObj> valueLst = new List<NameValueObj>();
valueList.add(finalObj);
List<NameValueObj> finalLst = valueList.stream().distinct().collect(Collectors.toList());

对象低于一个:

public class NameValueObj implements Serializable {

private static final long serialVersionUID = 1L;

private String name;

private String value;

 private int hashCode;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getValue() {
    return value;
}

public void setValue(String value) {
    this.value = value;
}

@Override
public boolean equals(Object obj) {
    NameValueObj nameVal = (NameValueObj)obj;
    if(name.equals(nameVal.name) &&
            value.equals(nameVal.value))
    {
        hashCode = nameVal.hashCode;
        return true;
    }else{
        hashCode = super.hashCode();
        return false;
    }
}

}

下面是实际结果。

{
  "start" : 0,
  "rows" : 10,
  "values" : [ {
    "name" : "record one",
    "value" : "val one"
  }, {
    "name" : "record one",
    "value" : "val one"
  } ],
  "numFound" : 2
}
But actual result should as below:
{
  "start" : 0,
  "rows" : 10,
  "records" : [ ],
  "values" : [ {
    "name" : "record one",
    "value" : "val one"
  }],
  "numFound" : 1
}

0 个答案:

没有答案