我在java中有两个列表,当匹配时我需要验证,我设置了第一个列表的一个字段,我试图用流来做这件事,但我不知道如何比较这两个列表。列表没有相同的元素,我想做这样的事情:
public static List<TransactionalityIdDBDTO> getVariationDateRange(List<TransactionalityIdDBDTO> list1,
List<TransactionalityIdDBDTO> list2){
List<TransactionalityIdDBDTO> idDBDTOS= new ArrayList<>();
Iterator prueba=list1.iterator();
while(prueba.hasNext()){
TransactionalityIdDBDTO transactionalityIdDBDTO=(TransactionalityIdDBDTO) prueba.next();
if(transactionalityIdDBDTO.get_id().equals(list2.get_id())){
transactionalityIdDBDTO.setVariation("1232");
idDBDTOS.add(transactionalityIdDBDTO);
}
}
return idDBDTOS;
}
冲突事务性IDDBDTO
public class TransactionalityIdDBDTO extends AbstractDTO {
private TransactionalityDBDTO _id;
private String totalTransaction;
private List<String> idResult;
private String variation;
您可以使用equals比较列表。例如
list1.equals(list2);
然而,
- 顺序很重要。如果列表包含相同的内容但顺序不同,则会被视为不平等
- 列表所包含的对象必须覆盖CCD_ 1。构成
TransactionalityIdDBDTO
的两个对象的条件是否相等取决于您。根据您的代码,id
似乎是一个良好的开端 - 如果计划将这些对象用作映射中的关键点,则也必须覆盖
hashCode
(无论如何,这样做都是个好主意( - 如果列表不按顺序排列,但你想认为它们是相等的,那么你可能应该首先根据id对它们进行排序。你可以这样做
list1.sort(Comparator.comparing(TransTransactionalityIdDBDTO::get_id));
list2.sort(Comparator.comparing(TransTransactionalityIdDBDTO::get_id));
像String, Integer, and other wrapper classes
这样的对象实现了Comparable
,这意味着可以使用上面的方法将它们彼此进行相同类型的比较。但不是返回String
的get_id
,而是说您得到了get_Foo
。然后equals
0将需要实现可比较,或者您必须提供一个更详细的比较器来进行排序
网站上有许多比较对象的例子。我建议您使用[hashCode]
、[equals]
、[comparable]
和[comparator]
标签进行搜索。Imo,了解这些以及它们是如何工作的,对于合理地了解Java的工作知识至关重要。