2017-01-12 1 views
0
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Утверждай Equalsusing потоков различного типа списка с несколькими полями

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

У меня есть List<OrdersDto> and a List<ReviewMedicalConfigDto>, как я могу сравнить TestID, screeningTypeId, jobCategoryId в списках различных типов с использованием Java потоков или любой другой эффективный способ в Java

Пробовал это только 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

«... Список и список» вы допрашивать отсутствуют некоторые детали, не ясно, ИМО. Вы имеете в виду 'List ' и т. Д.? – nullpointer

+0

вопрос обновлен – user630209

+1

Когда вы спрашиваете об исключении, всегда отправляйте полную трассировку стека исключений. И опубликуйте соответствующий код: нет никакого броска на всех n, что вы разместили, поэтому исключение, вероятно, не связано. –

ответ

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

Смежные вопросы