1

我有两个列表,比如说listAand listA1listA包含类A类型的对象,listA1也包含类类型的对象A。但是通过 java 代码listA添加了类A对象,而 listA1 通过将JSONString 转换为 Class添加了类 A 对象A

现在我需要比较listAlistA1。如果listA包含也在其中的任何对象,listA1我需要删除该对象并返回listA所有不在listA1.

我怎样才能在 Java 中实现这一点?

4

5 回答 5

1

请在您的班级上实施(覆盖)equals方法如下A。一旦完成,contains方法应该会有所帮助。

  public boolean equals(A a){
       boolean bEqual = false;
       if(this.value1!= null && a.value1!= null && 
          this.value1.eqauls(a.value1)
          ........
          ........
        ) {
          bEqual = true;              
        }
        return bEqual;
   }

编辑:

迭代 的元素listA1。如果它们存在于 中listA,请将它们删除。

   for(A a: listA1){
     if(listA.contains(a)){
        listA.remove(a);
     }
   }
于 2012-10-11T04:58:58.333 回答
0

Apache 的 commons.collections 库有一个 CollectionUtils 类,该类为 Collection 操作/检查提供易于使用的方法,例如交集、差异和联合。

org.apache.commons.collections.CollectionUtils API文档在这里。

我认为,您可以为此使用交互方法

于 2012-10-11T05:01:36.080 回答
0

您需要覆盖类中的.equals(Oject).hashCode()方法。
列表不需要 hashCode,但是当您覆盖 equals 时,合同说您必须覆盖 hashCode

于 2012-10-11T05:03:36.617 回答
0

如果您打算比较两个对象,请查看比较对象

另外,它的工作原理等于

于 2012-10-11T05:25:42.963 回答
0

我做了什么来解决这个问题......

 public static class A  {


        String  headerName;

        public String getHeaderName() {
            return headerName;
        }
        public void setListBoxHeaderName(String headerName) {
            this.headerName= headerName;
        }
        public A(String headerName) {
            super();

            this.headerName = headerName;
        }


        public boolean equals(A rData) {
            boolean bEqual = false;
            if (this.getHeaderName() != null && rData.getHeaderName() != null
                    && this.getHeaderName().equals(rData.getHeaderName())) {
                bEqual = true;
            }
            return bEqual;
        }

    }

为了比较两个列表,代码如下......

for (A value1 : listA1) {
            for (A value2: listA) {
                if (value2.equals(value1 )) {
                 listA.remove(value2);
                    break;
                }
            }
        }

这就是我使用的确切解决方案谢谢

于 2012-10-11T06:05:01.740 回答