java - 以任何顺序比较值

标签 java enums comparison

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

有一个枚举,类似

public enum MyEnum { C, G, A, T, U }

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

C complements G
G complements C
A complements T
T complements A
U complements T
T complements U

如果不写这样的代码我怎么能做到:

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

提前致谢。

最佳答案

为什么不用 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);
    }
}

关于java - 以任何顺序比较值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18857068/

相关文章:

serialization - 序列化未实现序列化的外部 crate 枚举的 vec

string - C# 中的 Jaro–Winkler 距离算法

file - 如何比较批处理文件中的两个文件?

c# - 有没有更有效的方法来协调大型数据集?

java - Observables 的单元测试客户端

java - 同步 SynchronizedMap 的性能开销

java - 旋转 Y 在某些手机上不起作用

c++ - 如何将枚举类传递给 QML?

mysql - 使用 MySql 从 varchar 到 enum 字段的外键约束

java - 使用一个 int 变量对 Stack 中的数字进行排序