gpt4 book ai didi

java - 使用具有多个字段的不同类型列表的流来断言等于

转载 作者:行者123 更新时间:2023-12-01 09:01:51 24 4
gpt4 key购买 nike

public class OrdersDto implements java.io.Serializable {
/** Id **/
private Long screening;
private Long category;
private TestMastDto testMast;
/** getters & setters/ constructor */
}

public class TestMastDto implements java.io.Serializable {
/** Id **/
private Long testId;
/** getters & setters/ constructor */
}

还有另一种 POJO 格式

public class ReviewMedicalConfigDto implements Serializable {
/** Id **/
private Long jobCategoryId;
private Long screeningTypeId;
private Long testId;
}

我有一个List<OrdersDto> and a List<ReviewMedicalConfigDto> ,如何使用 java 流或 java 中的任何其他有效方式比较不同类型列表中的 testId、screeningTypeId、jobCategoryId

仅对 testId 尝试了此操作,这给出了类转换异常

 boolean isConfigTest = orders.stream().map(orObj -> orObj.getTestMast().getTestId())
.collect(Collectors.toList()).equals(reviewMedicalConfigDtos.stream().map( rmObj -> rmObj.getTestId() ));

异常 java.lang.ClassCastException:om.gov.moh.services.dto.ReviewMedicalStatusDto 无法转换为 om.gov.moh.services.dto.OrdersDto

最佳答案

一般模式是

boolean match = list1.size() == list2.size() &&
IntStream.range(0, list1.size()).allMatch( index -> {
FirstType a = list1.get(index);
SecondType b = list2.get(index);
return Objects.equals(a.getProperty1(), b.getProperty1())
&& Objects.equals(a.getProperty2(), b.getProperty2())
&& Objects.equals(a.getProperty3(), b.getProperty3());
});

尽管普通循环可能更简单。

对于原始类型的属性,您可以将 Objects.equals(a.getPropertyX(), b.getPropertyX()) 替换为 a.getPropertyX() == b.getPropertyX( )...

关于java - 使用具有多个字段的不同类型列表的流来断言等于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41605549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com