[英]Can I Map Enum Keys to Enum Values?
我有2個枚舉(模塊,唯一字符)
模塊具有所有鍵
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();
}
}
如何使用HashMap或EnumMap映射它們?
很簡單,您可以使用EnumMap<Modules, UniqueChars>
。 鍵將是一個枚舉的值,而該值將是另一個枚舉的值。 此映射很簡單,並且可以正常工作。
首先,是否可以從2個單獨的枚舉中讀取鍵和值?
是的,就像可以有一個枚舉一樣,也可以根據需要擁有任意多個。
顯示一些有關您的Map
使用情況的代碼,以獲取更多幫助。
是:
import java.util.*;
enum color {
r,g,b
}
enum letter {
a,b,c
}
public class So16659089 {
public static void main(String[] args) {
System.out.println(map);
System.out.println(map2);
}
static Map<color,letter> map=new EnumMap<color,letter>(color.class);
static { // one way
map.put(color.r,letter.a);
map.put(color.g,letter.b);
map.put(color.b,letter.c);
}
static Map<color,letter> map2=new EnumMap<color,letter>(color.class);
static letter[] letters=new letter[]{letter.a,letter.b,letter.c};
static { // another way
for(int i=0;i<color.values().length;i++)
map2.put(color.values()[i],letters[i]);
}
}
我在API中使用以上發布的代碼。 我想用HashMap或EnumMap替換開關塊。 不想在'n'個案例中使用'n'put語句。
public String getUniqueString(int charCount,boolean validSpecialChar,UniqueChars模塊,boolean invalidSpecialChar,String ... specialChars){
final int STRING_LENGTH = this.getRandomNumber(charCount);
String finalString = "";
String validCharStrings = "";
if(!validSpecialChar){
validCharStrings = UniqueChars.getValidCharStrings(
UniqueChars.LOWER_CASE_LETTERS,
UniqueChars.UPPER_CASE_LETTERS, UniqueChars.NUMBERS);
} else {
UniqueChars moduleName = null;
switch (module) {
case MTREE:
moduleName = UniqueChars.MTREE;
break;
case VTL_POOL:
moduleName = UniqueChars.VTL_POOL;
break;
case VTL_ACCESS:
moduleName = UniqueChars.VTL_ACCESS;
break;
case SNAPSHOT:
moduleName = UniqueChars.SNAPSHOT;
break;
case NFS_EXPORT:
moduleName = UniqueChars.NFS_EXPORT;
break;
case CIFS_SHARE:
moduleName = UniqueChars.CIFS_SHARE;
break;
case REPORTS:
moduleName = UniqueChars.REPORTS;
break;
case LOCAL_USERS:
moduleName = UniqueChars.LOCAL_USERS;
break;
}
// If specialChar is true, special characters are included for the
// specified module
validCharStrings = UniqueChars.getValidCharStrings(
UniqueChars.LOWER_CASE_LETTERS,
UniqueChars.UPPER_CASE_LETTERS, UniqueChars.NUMBERS,
moduleName);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.