2017-01-12 7 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; 
} 

は私がJavaのストリームを使用して、異なるタイプのリストにテストID、screeningTypeId、jobCategoryIdを比較することができますどのように、List<OrdersDto> and a List<ReviewMedicalConfigDto>を持っているがありますまたはJavaで

その他の効率的な方法は、クラスのキャスト例外

boolean isConfigTest = orders.stream().map(orObj -> orObj.getTestMast().getTestId()) 
        .collect(Collectors.toList()).equals(reviewMedicalConfigDtos.stream().map(rmObj -> rmObj.getTestId())); 
を与えるだけでテストIDのためにこれを試してみました

例外java.lang.ClassCastExceptionが:om.gov.moh.services.dto.ReviewMedicalStatusDtoはom.gov.moh.services.dto.OrdersDto

+0

「...リストとリスト」あなたがいない明確IMOいくつかの詳細を、欠けている質問をObjects.equals(a.getPropertyX(), b.getPropertyX())を交換することがあります。あなたは 'List 'などを意味しますか? – nullpointer

+0

質問が更新されました。 – user630209

+1

例外について尋ねるときは、常に完全な例外スタックトレースを投稿してください。関連コードを投稿する:あなたが投稿したものはまったく出現しないので、例外はおそらく無関係です。 –

答えて

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

通常のループは簡単かもしれません。プリミティブ型の性質のために

、あなたは... a.getPropertyX() == b.getPropertyX()

関連する問題