我的数据表如下
Column1 | Column 2| Colmun3
ROW1 AAA | BBB | CCC
ROW2 XXX | YYY | ZZZ
ROW3 PPP | QQQ | RRR
所有AAA,BBB,CCC,XXX,YYY,ZZZ,PPP,QQQ,RRR将作为常量存储。 所有其他模块中的不同位置都会引用相同的内容。
我想通过调用ROW1.COLUMN1,ROW1.COLMUN2等作为输入来检索常量AAA,BBB等。
哪种Java功能最适合此要求?收藏品,枚举或其他?请提供与上述类似的任何相关示例。
答案 0 :(得分:1)
用于使用密钥检索数据的最简单的数据结构是Map。
在这种特殊情况下,使用的密钥是一个自定义对象,它包含有关对象和类型的信息。
public class MyKey {
private String object;
private String type;
public MyKey(String object, String type) {
this.object = object;
this.type = type;
}
// Redefine equals and hashCode functions
}
重要提示:如果您使用自定义密钥,则需要记住重写hashCode
并等于functions
。
更简单的解决方案是将对象和类型的组合用作键。 我假设你所谓的对象和你所谓的类型是字符串。所以你可以使用
String key = object + type;
或更好地使用特殊字符
String key = object + "$" + type;
答案 1 :(得分:0)
我喜欢@Davide的回答。另一种选择是使用注释中建议的Map
Map
,并将其包装在执行所有空检查的另一个类中:
import java.util.HashMap;
import java.util.Map;
public class ReferenceTable {
public final static String COL1 = "COL1";
public final static String COL2 = "COL2";
public final static String COL3 = "COL3";
public final static String ROW1 = "ROW1";
public final static String ROW2 = "ROW2";
public final static String ROW3 = "ROW3";
private Map<String, Map<String, String>> ref = new HashMap<>();
{
put(COL1, ROW1, "AAA");
put(COL2, ROW1, "BBB");
put(COL3, ROW1, "CCC");
// ...
}
private void put(String column, String row, String value) {
Map<String, String> values = ref.get(column);
if (values == null) {
values = new HashMap<>();
ref.put(column, values);
}
values.put(row, value);
}
public String get(String column, String row) {
Map<String, String> values = ref.get(column);
return values == null ? null : values.get(row);
}
}