Jac*_*ack 4 java list java-8 java-stream
我有以下方法:
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'
Run Code Online (Sandbox Code Playgroud)
现在,我想将其作为参数列表:
public static List<A> getValuesExclusion(A... exclusions){
return Arrays.stream(values())
.filter(???)
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何为第二种情况做过滤器?我想检索一个将所有值“ exclusions”排除在外的枚举列表。以下是A类的属性:
public enum A implements multilingualA{
A("a"),
B("b"),
C("c"),
D("d");
...
}
Run Code Online (Sandbox Code Playgroud)
如果要确保未将所有项目都包括在内,则exclusions可以执行以下操作:
public static List<A> getValuesExclusion(AType... exclusions){
return Arrays.stream(values())
.filter(e -> Arrays.stream(exclusions).noneMatch(c -> c == e))
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
这将创建一个Streamof exclusions,然后用于noneMatch()确保该给定AType不包含在Array