java - 在 Java 中比较两个集合

标签 java collections

我在一个 Java 类中有两个集合。第一个集合包含以前的数据,第二个包含前一个集合的更新数据。

我想比较这两个集合,但我不确定有效实现这一点的最佳方法。两个集合将包含相同数量的项目。

基于每个集合中的 carType 相同,我想执行 carType 方法。

感谢任何帮助

最佳答案

很难提供帮助,因为您没有告诉我们您喜欢如何比较(相同大小的)集合。一些想法,希望有一个适合:

比较两个集合是否包含相同顺序的相同对象

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

比较两个集合是否以任何顺序包含相同的对象

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

在其他集合中查找已更改的元素

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

根据您的评论,该算法可以做到。它收集所有已更新的汽车。如果方法结果是一个空列表,则两个集合都包含相同顺序的相同条目。该算法依赖于 Car 类型的equals() 的正确实现!

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

关于java - 在 Java 中比较两个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4085353/

相关文章:

javascript - HTML 页面和 Java servlet 之间交换数据,无需刷新页面

java - 如何计算List中某个元素出现的次数

Java 集合。添加(E 对象),但删除(对象对象)

java - 如何查找 MultivaluedMap 中键的长度/大小?

c# - List<Uri>.OrderBy() 基于 Contains() 的排序顺序?

collections - 映射 clojure map

java - JDBC和mySQL将相关数据库表转换为对象

java - 在 android 中重绘位图的更快方法?

java - 设计可插拔积分和徽章系统

java - 将 Soap 消息发送到 JMS 队列