Skip to main content
 首页 » 编程设计

java中使用自定义逻辑比较 2 个 java 列表

2025年12月25日49bluestorm

我想比较 2 个 java 列表,其中包含 2 种不同类型的对象。然而,这两种类型的对象都有一些共同的属性,我想对它们进行比较。

class A { 
  int id; 
}  
 
class B { 
  int id2; 
} 
 
List<A> listA; // contains some objects 
List<B> listB 
 
// comparison logic 
boolean isEqual = true; 
if(listA.size() != listB.size()) 
  isEqual = false; 
 
for(int i=0;i<listA.size();++i) { 
  if(!listA.get(i).equals(listB.get(i)) { 
    isEqual = false; 
    break; 
  } 
} 

有没有一个好的方法可以通过java流来简洁地编写这个?

请您参考如下方法:

实现此目的的一种方法是使用 IntStream:

boolean equal = (IntStream.range(0, listA.size()) 
     .filter(i -> listA.get(i).equals(listB.get(i))).count() == listA.size()); 

这不适用于不同大小的列表,但这只是一个简单的条件(listA.size() == listB.size()),为简洁起见,我省略了。

编辑:

可以使用noneMatch()对其进行改进:

boolean equal = IntStream.range(0, listA.size()) 
                         .noneMatch(i -> listA.get(i).id != listB.get(i).id2);