使用Java存储和引用常量表的最佳方法
我有如下数据表使用Java存储和引用常量表的最佳方法,java,Java,我有如下数据表 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等
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函数最适合这个需求?集合、枚举或任何其他?请提供与上述类似的任何相关示例。使用键检索数据的最简单数据结构是地图 在这种特殊情况下,要使用的键是一个自定义对象,该对象包含有关对象和类型的信息
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
和equals函数
一个更简单的解决方案是使用对象和类型的组合作为键。
我假设您所称的对象和类型都是字符串。所以你可以用
String key = object + type;
或者最好使用特殊字符
String key = object + "$" + type;
我喜欢@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);
}
}
import java.util.HashMap;
导入java.util.Map;
公共类可引用{
公共最终静态字符串COL1=“COL1”;
公共最终静态字符串COL2=“COL2”;
公共最终静态字符串COL3=“COL3”;
公共最终静态字符串ROW1=“ROW1”;
公共最终静态字符串ROW2=“ROW2”;
公共最终静态字符串ROW3=“ROW3”;
private Map ref=new HashMap();
{
卖出(第1列第1行,“AAA”);
卖出(COL2,第1行,“BBB”);
put(COL3,第1行,“CCC”);
// ...
}
私有void put(字符串列、字符串行、字符串值){
映射值=ref.get(列);
如果(值==null){
values=newhashmap();
ref.put(列、值);
}
value.put(行,值);
}
公共字符串获取(字符串列、字符串行){
映射值=ref.get(列);
返回值==null?null:values.get(行);
}
}