Comparing two Collections in Java

前端 未结 7 1476
孤独总比滥情好
孤独总比滥情好 2020-12-15 23:30

I have two Collections in a Java class.The first collection contains previous data, the second contains updated data from the previous collection.

I would like to c

7条回答
  •  暖寄归人
    2020-12-16 00:23

    Difficult to help, because you didn't tell us how you like to compare the (equal-size) collections. Some ideas, hoping one will fit:

    Compare both collections if they contain the same objects in the same order

    Iterator targetIt = target.iterator();
    for (Object obj:source)
      if (!obj.equals(targetIt.next()))
        // compare result -> false
    

    Compare both collections if they contain the same objects in the any order

    for (Object obj:source)
      if (target.contains(obj))
        // compare result -> false
    

    Find elements in other collection that has changed

    Iterator targetIt = target.iterator();
    for (Object obj:source)
      if (!obj.equals(targetIt.next())
        // Element has changed
    

    Based on your comment, this algorithm would do it. It collects all Cars that have been updated. If the method result is an empty list, both collections contain equal entries in the same order. The algorithm relies on a correct implementation of equals() on the Car type!

    public List findUpdatedCars(Collection oldCars, Collection newCars)
      List updatedCars = new ArrayList();
      Iterator oldIt = oldCars.iterator();
      for (Car newCar:newCars) {
        if (!newCar.equals(oldIt.next()) {
          updatedCars.add(newCar);
        }
      }
      return updatedCars;
    }
    

提交回复
热议问题