使用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(行);
}
}