java 使用Steam API用ArrayListAssert两个< ClassA>ArrayList< ClassB>

zengzsys  于 2023-06-20  发布在  Java
关注(0)|答案(2)|浏览(144)
    • bounty将在6天内到期**。此问题的答案有资格获得+50声望奖励。Kuldeep Yadav正在寻找一个答案从一个有信誉的来源

有两个类A和B,这两个类都有相同类型的对象,并且希望将类A的值与类B的值相匹配。
A类样品:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@JsonIgnoreProperties(ignoreUnknown = true)

public class LedgerEntryResponseActual {

    private String fromPartyId;

    private PartyType fromType;
}

B类样品:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder

public class LedgerResponseExpected {

    private String fromPartyId;

    private PartyType fromType;
}

A类的JSON数据:

[
    {
        "fromPartyId": 1265389,
        "fromType": "T168716355035036378"
    },
    {
    "fromPartyId": 1265389,
    "fromType": "T168716355035036379"
    }

]

B类样本数据:

[
    {
      "fromPartyId": "13916fb0-fa83-40aa-a452-37de08e392ba",
      "fromType": "MERCHANT"
    },
    {
      "fromPartyId": "ce2593b1-2cc4-46c7-b1fe-9a57990f593c",
      "fromType": "INTERCHANGE"
    },
    {
      "fromPartyId": "ce2593b1-2cc4-46c7-b1fe-9a57990f593c",
      "fromType": "INTERCHANGE"
    },
    {
      "fromPartyId": "ce2593b1-2cc4-46c7-b1fe-9a57990f593c",
      "fromType": "INTERCHANGE"
    }
  ]

注:PartyType是枚举。
能够Assert一个键和值,但希望同时Assert所有键和值。

boolean anyMatch = expectedResult.stream().anyMatch(element -> element.getPartyId().contains(responseActual.getPartyId()));

想要在java steam的帮助下将类A的键和值与类B匹配。

im9ewurl

im9ewurl1#

对概念的错误理解你应该只有一个类LedgerResponse和两个list示例,而不是只比较两个list

kgsdhlau

kgsdhlau2#

你可以用下面的代码来实现:

boolean match(List<LedgerResponseExpected> expectedItems, List<LedgerEntryResponseActual> actualItems) {
  return expectedItems.stream().allMatch(expected -> {
            String fromPartyId = expected.getFromPartyId();
            PartyType fromType = expected.getFromType();
            return actualItems.contains(new LedgerEntryResponseActual(fromPartyId, fromType));
          }
  );
}

在这里,我们从expectedItems列表中获取所有项,并检查使用LedgerResponseExpected属性创建的对象是否存在于actualItems中。

相关问题