【发布时间】:2023-03-19 10:59:01
【问题描述】:
解释...我收到两个MyDTO 类型列表的返回,并将这两个返回添加到一个列表中。并且这些记录被标记,在前两个返回中带有Enum。
由于列表来自不同的地方,我可以重复记录。
并且,如果有重复记录,我必须在Enum中标明具体类型,只留下一条记录。
MyDTO:
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(exclude = {"myEnum","someField"})
@Getter
@Setter
@ToString
public class MyDTO {
private String someField;
private MyEnum myEnum;
private Long codMyDto;
}
我的返程班:
@Slf4j
@Singleton
@RequiredArgsConstructor
public class MyCreateContextClass {
@Override
protected List<MyDTO> myMainMethod() throws Exception {
List< MyDTO > myDTOList = new ArrayList<>();
myDTOList.addAll(firstReturnMyDTO());
myDTOList.addAll(secondReturnMyDTO());
// Mark the repeated items with type 3 of the Enum and make them unique.
// How to do that ?
return myDTOList; // My return must have unique items with correct enum
}
private List<MyDTO> firstReturnMyDTO() throws Exception {
return returnFirstListFromDTO.returnDTO(); // here my Enum is 1
}
private List<MyDTO> secondReturnMyDTO() throws Exception {
return returnSecondListFromDTO.returnDTO(); // here my Enum is 2
}
}
我的枚举:
@Getter
public enum MyEnum {
MYFIRSTYTPE(1, “first”), // first addAll
MYSECONDTYPE(2, “second”), // second addAll
TWORETURNS(3, “all”); // in case the item is on both lists.
private Integer key;
private String value;
MyEnum(Integer key, String value) {
this.key = key;
this.value = value;
}
public static MyEnum getEnum(Integer key) {
for (MyEnum myEnum : MyEnum.values()) {
if (myEnum.getKey().equals(key)) {
return myEnum;
}
}
return MyEnum.MYFIRSTYTPE;
}
}
那么,如何检查该项目是否重复(在两个列表中都返回)并将其标记为Enum 3 的类型?
【问题讨论】: