以任何顺序比较值

Dél*_*nio 3 java comparison enums

我虽然这是一个常见的问题,但我找不到任何解决方案.

有一个枚举,类似于

public enum MyEnum { C, G, A, T, U }
Run Code Online (Sandbox Code Playgroud)

我需要将一个枚举实例与另一个实例进行比较,如下所示:

C补充G
G补充C
A补充T
T补充A
U补充T
T补充U.

如果不编写如下代码,我怎么能这样做:

public boolean complements(MyEnum other) {
    if(this.compareTo(C) == 0) {
        if(other.compareTo(G) {
            return true;
        } else return false;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

ars*_*jii 8

为什么不有一个complements领域?你可以拥有它EnumSet.

enum MyEnum {
    G, C, A, T, U;

    static {
        C.complements = EnumSet.of(G);
        G.complements = EnumSet.of(C);
        A.complements = EnumSet.of(T);
        T.complements = EnumSet.of(A, U);
        U.complements = EnumSet.of(T);
    }

    private EnumSet<MyEnum> complements;

    public boolean complements(MyEnum other) {
        return complements.contains(other);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @CommuSoft作为位向量.当与枚举一起使用时,它们比其他集合实现更快. (2认同)