如何在Java中找到枚举的子集?

joh*_*ohn 3 java enums

我有一个枚举,如下所示:

public enum DatacenterEnum {
    ABC, PQR, LTR;

    // this tells my current local datacenter enum
    private static final DatacenterEnum ourLocation = findCurrentLocation();

}
Run Code Online (Sandbox Code Playgroud)

现在我想找到远程数据中心的列表。举个例子,假设如果ourLocation是 ABC,那么 REMOTE_DATACENTER 列表或者它可以是 EnumSet(我将在稍后迭代)应该具有 PQR 和 LTR,对于其他组合类似。做这个的最好方式是什么?

Rad*_*def 5

听起来你想要补充

// contains all DatacenterEnum except ourLocation
Set<DatacenterEnum> remoteSet =
    EnumSet.complementOf(EnumSet.of(ourLocation));
// as a List, if you want
List<DataceterEnum> remoteList =
    new ArrayList<>(remoteSet);
Run Code Online (Sandbox Code Playgroud)