java - 从 ArrayList 中获取重复对象

标签 java

如何从 ArrayList 中获取重复项?

public class Order {

    private String portId;
    private String action;
    private String idType;
    private String id;
    private BigDecimal amount;


    public String getPortId() {
        return portId;
    }
    public void setPortId(String portId) {
        this.portId = portId;
    }
    public String getAction() {
        return action;
    }
    public void setAction(String action) {
        this.action = action;
    }
    public String getIdType() {
        return idType;
    }
    public void setIdType(String idType) {
        this.idType = idType;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public BigDecimal getAmount() {
        return amount;
    }
    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }


}

我的代码:

List<Order> duplicateList = new ArrayList<Order>();
List<Order> nonDuplicateList = new ArrayList<Order>();

Set<Order> set = new HashSet<Order>();
for (Order order : listContainingAllOrders) {
    if (!set.add(order)) {

        duplicateList.add(order);
    } else {
        nonDuplicateList.add(order);
    }
}

我想实现 duplicateList 和 nonDuplicateList,在这里我将重复列表和非重复列表组合在一起 并显示在 UI 上。重复的订单将由错误消息列标识。

最佳答案

如果我理解你,那么你可以替换这个

if (!set1.add(order)) {

if (!set1.contains(order)) {
  set1.add(order);

编辑

您需要在您的Order 中覆盖equals()hashCode()。假设具有相同 id 的订单在定义上是相等的 - 一种可能的方法是,

@Override
public boolean equals(Object obj) {
  if (obj instanceof Order) {
    if (id == null) {
      // return ((Order) obj).id == null;
      return false; // probably best to prevent null
    }
    return id.equals(((Order) obj).id);
  }
  return false;
}

@Override
public int hashCode() {
  return id.hashCode();
}

关于java - 从 ArrayList 中获取重复对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25273634/

相关文章:

java - RMI 和 Web 服务

java - 需要 MVC 模式的帮助

java - 如何使用 java.net API 设置 AppENGine (Java) urlfetch 截止日期

java - 创建自定义 Flowable 任务

java - log4j 追加器配置

java - 如何捕获被打开的 JDialog 阻止的窗口上的鼠标单击事件

Java 图形用户界面/图形

java - 如何在没有 <form> 元素的情况下将参数从 JSP 页面发送到 Servlet

java - 错误 : Could not find or load main class (Command Prompt). 包名称有何影响

java - 如何从 Loader 添加文本到 TextView