下午好
我有一个问题,目前我需要一个传递值的数组列表的方法,有必要将其与枚举进行比较,如果列表中的某些值在枚举中找不到,则返回 false,这是一种验证方法,我正在考虑如何做到这一点,我想通过流来做到这一点,但我想不出任何想法。
我的ArrayList如下所示:
List<String> listOfService = new ArrayList<>(Arrays.asList("mobile_postpaid", "mobile_internet", "sam"));
我的枚举类
package org.tmve.customer.ms.beans.response;
import lombok.Getter;
@Getter
public enum Service {
MOBILE_PREPAID("mobile_prepaid"), MOBILE_POSTPAID("mobile_postpaid"), VALUE_ADDED_SERVICE("value_added_service"), MOBILE_INTERNET("mobile_internet"), DTH("dth"), LANDLINE("landline"), AUTHENTICATION("authentication");
private String value;
Service(String value) {
this.value = value;
}
}
正如我们在 ListOfService 中看到的,sam 的值不在 ENUM 内,所以我想要一个比较方法,在这种情况下,在 enum Service 的值中找不到 sam,则返回 false
您可以向枚举添加方法
public List<String> getValues() {
return values().map(service -> service.value);
}
然后像这样使用
allMatch
boolean b = listOfService.stream()
.allMatch(service -> Service.getValues().contains(service))
参见 allMatch 文档
您可以通过存储列表或使用其他比较来优化枚举方法