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()
…