我有以下方法:

public static List<A> getValuesExclusion(A exclusion) {
        return Arrays.stream(values())
                .filter(item -> item != exclusion)
                .collect(Collectors.toList());
}
//this function returns enum list of A types that has no A type'exclusion'

现在,我想将其作为参数列表:
public static List<A> getValuesExclusion(A... exclusions){
        return Arrays.stream(values())
                .filter(???)
                .collect(Collectors.toList());
}

我的问题是,如何为第二种情况做过滤器?我想检索一个将所有值“exclusions”排除在外的枚举列表。以下是A类的属性:
public enum A implements multilingualA{
    A("a"),
    B("b"),
    C("c"),
    D("d");
    ...
}

最佳答案

如果要确保exclusions中未包含所有项目,可以执行以下操作:

public static List<A> getValuesExclusion(AType... exclusions){
        return Arrays.stream(values())
                .filter(e -> Arrays.stream(exclusions).noneMatch(c -> c == e))
                .collect(Collectors.toList());
}

这将创建一个Streamexclusions,然后使用noneMatch()确保给定的AType不包含在Array

08-06 16:35