2017-01-12 2 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 */ 
} 

Es gibt eine anderes POJO-FormatAssert Equalsusing Ströme verschiedene Arten von Liste mit mehreren Feldern

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

ich habe, ist ein List<OrdersDto> and a List<ReviewMedicalConfigDto>, wie kann ich TestID, screeningTypeId, jobCategoryId in Listen verschiedenen Typen mit Java-Streams vergleichen oder jede andere effiziente Art und Weise in Java

versucht das für nur TestID, die gibt Klasse Guss Ausnahme

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

Ausnahme java.lang.ClassCastException: om.gov.moh.services.dto.ReviewMedicalStatusDto kann nicht auf om.gov.moh.services.dto.OrdersDto

+0

ersetzen „... Liste und einer Liste“ Sie hinterfragen wird einige Details fehlen, IMO nicht klar. Meinst du 'List ' etc? – nullpointer

+0

Frage aktualisiert – user630209

+1

Wenn Sie nach einer Ausnahme fragen, posten Sie immer die vollständige Trace des Ausnahme-Stacks. Und posten Sie den entsprechenden Code: Es gibt keine Besetzung und Sie haben nichts gepostet. Daher ist die Ausnahme wahrscheinlich nicht verwandt. –

Antwort

1

Das allgemeine Muster gegossen werden ist

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()); 
    }); 

obwohl eine normale Schleife einfacher sein könnte.

Für Eigenschaften der Urtyp, könnten Sie Objects.equals(a.getPropertyX(), b.getPropertyX()) mit a.getPropertyX() == b.getPropertyX() ...