比较java中的2个对象数组,执行条件并修改列表数据



我在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,这意味着可以使用上面的方法将它们彼此进行相同类型的比较。但不是返回Stringget_id,而是说您得到了get_Foo。然后equals0将需要实现可比较,或者您必须提供一个更详细的比较器来进行排序

网站上有许多比较对象的例子。我建议您使用[hashCode][equals][comparable][comparator]标签进行搜索。Imo,了解这些以及它们是如何工作的,对于合理地了解Java的工作知识至关重要。

相关内容

  • 没有找到相关文章

最新更新