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尝试此操作,该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
答案 0 :(得分:1)
一般模式是
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()
...