java循环遍历枚举值的子集
我有一个带有4个值的枚举,还有一个接受枚举值的方法签名。我希望能够处理所有未作为doSomething()参数传递的枚举值
public void doSomething(EnumThing thing){
EnumThing[] thingValues = EnumThing.values();
List<EnumThing> valuesNotPassedAsArg = new ArrayList<EnumThing>();
for(EnumThing th : thingValues){
valuesNotPassedAsArg.add(th);
}
valuesNotPassAsArg.remove(thing);
//here I would loop through all valuesNotPassAsArg and do something with them
}
public enum EnumThing{
SOMETHING, SOMETHINGELSE, ANOTHERTHING;
}
有没有更干净的方法?我觉得从thingValues数组获取项目的循环是多余的
# 1 楼答案
我想说,这样会好一点
# 2 楼答案
另一种方法是使用
Stream.of
方法。例如:其中打印:
# 3 楼答案
# 4 楼答案
查看
EnumSet
。具体来说,# 5 楼答案
@Marko的答案比这更好,但了解这种替代方法可能会有所帮助
这是打印出来的
# 6 楼答案
查看标题,迭代一个范围
还是这个
如果您只想跳过一个元素,那么Skip Head's solution可能会优于complementOf,这在单次迭代的情况下似乎是过分了