如何正确地将所有枚举值插入哈希集中?

How to correctly insert all the enum values into an hashset?

我在 Java 中遇到以下问题。

我有这个 eunm,它包含 2 个值,代表 2 个字符串值 "COORDINATION""PISC"

private enum exclusion {COORDINATION, PISC};

所以我创建了这个 getEnums() 方法,其中 return 一个 HashSet 包含枚举的值作为字符串:

private static HashSet<String> getEnums() {

    HashSet<String> values = new HashSet<String>();

    for (Exclusion e : Exclusion.values()) {
        //values.add(Exclusion.values());
        values.add(Exclusion.values().toString());
        System.out.println("Inserted values: " + e.values().toString());
    }

    return values;
}

问题是,当调用此方法时,returned values 对象包含 2 个字符串,但使用 deubugget 将值放入此 HashSet 不是 "COORDINATION""PISC" 而是像这样的东西:

Inserted values: [Legp.prc.km.actions.configurationProject.ConfigurationProjectAction$Exclusion;@34653605
Valore inserito: [Legp.prc.km.actions.configurationProject.ConfigurationProjectAction$Exclusion;@39510a30

我认为问题与我如何将值插入值 HashSet 有关

然后,在我的代码的其他地方,我有以下循环:

HashSet esclusionHashSet = getEnums();
for (DLFolder dlFolder : listFolder) {
    if (dlFolder.getPath().split("/").length <= 4 && dlFolder.getPath().contains(KmConstants.TAXONOMY_PARENT_FOLDER) && !esclusionHashSet.contains(dlFolder.getName())) {
        treePath.put(dlFolder.getPath(), dlFolder);
        path.add(dlFolder.getPath());            
    }
}

正如您在此看到的,对于我列表对象中的所有元素,我检查 dlFolder 对象的名称(可能是 "COORDINATION""PISC" 未进入包含我原始 exclusion 枚举,检查通过:

!esclusionHashSet.contains(dlFolder.getName()) 

问题是它return总是FALSE(似乎esclusionHashSet*不包含**"COORDINATION""PISC" 值)

我该如何解决这个问题?我错过了什么?

而不是:

for (Exclusion e : Exclusion.values()) {
    //values.add(Exclusion.values());
    values.add(Exclusion.values().toString());
    System.out.println("Inserted values: " + e.values().toString());
}

你应该这样做:

for (Exclusion e : Exclusion.values()) {
    values.add(e.name());
    System.out.println("Inserted value: " + e.name());
}

您当前添加的是包含枚举所有值的数组的字符串表示形式,而不是每个值的字符串表示形式。