使用java流来验证列表中的值是否在枚举类中找到

问题描述 投票:0回答:1

下午好

我有一个问题,目前我需要一个传递值的数组列表的方法,有必要将其与枚举进行比较,如果列表中的某些值在枚举中找不到,则返回 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

java enums java-stream
1个回答
0
投票

您可以向枚举添加方法

public List<String> getValues() {
    return values().map(service -> service.value);
}

然后像这样使用

allMatch

boolean b = listOfService.stream()
    .allMatch(service -> Service.getValues().contains(service))

参见 allMatch 文档

您可以通过存储列表或使用其他比较来优化枚举方法

© www.soinside.com 2019 - 2024. All rights reserved.