【发布时间】:2013-05-20 22:01:55
【问题描述】:
我有 2 个枚举(模块、UniqueChars)
模块有所有的键
UniqueChars 包含所有值。
如何使用 HashMap 或 EnumMap 映射这些?
首先,是否可以从 2 个单独的枚举中读取键和值??
public enum modules {
MODULE("MTREE, VTL_POOL, VTL_ACCESS, SNAPSHOT, NFS_EXPORT, CIFS_SHARE, REPORTS, LOCAL_USERS ");
private String validModules;
private modules(String validModules) {
this.validModules= validModules;
}
}
public enum UniqueChars {
LOWER_CASE_LETTERS("abcdefghijklmnopqrstuvwxyz"),
UPPER_CASE_LETTERS("ABCDEFGHIJKLMNOPQRSTUVWXYZ"),
NUMBERS("0123456789"),
PUNCTUATION(".-_"),
MTREE("*/:<>?\\|"),
VTL_POOL("*'?:/\\,"),
VTL_ACCESS("*'?:/\\,"),
SNAPSHOT("`~!@#$%^&*()_+-={}|[]\\:\";'<>?,.'"),
NFS_EXPORT("_-"),
CIFS_SHARE("\\/:*?\"<>|+[];,="),
REPORTS("`~!@#$%^&*()_+-={}|[]\\:\";'<>?,.'"),
LOCAL_USERS("._-");
private String validChars;
private UniqueChars(String validChars) {
this.validChars = validChars;
}
public String getValidChars() {
return validChars;
}
public static String getValidCharStrings(UniqueChars... uniqueChars) {
StringBuilder validCharsSB = new StringBuilder();
for (UniqueChars chars : uniqueChars) {
validCharsSB.append(chars.getValidChars());
}
return validCharsSB.toString();
}
}
【问题讨论】:
-
您的“模块”枚举(应该重命名为“模块”)已损坏,因为它只有一个成员,没有公共方法。它有什么用?接下来,您到底想达到什么目的?请更详细地解释您的最终目标以及您发布的代码应该做什么和不应该做什么。
-
我想做 map.put(Module.Mtree, UniqueChars.getValidCharStrings(UniqueChars.MTree)) ... 以同样的方式我想将 Module 枚举中的所有模块映射到它们对应的值在 UniqueChars 枚举中。目前我只有一个枚举 UniqueChars,我正在使用开关盒进行映射。我想使用 2 个枚举并循环 map.put 语句。