1

我正在为一个程序使用多个哈希表,即 table1 table2 table3 等。每个表都有 3 个键值对。键相同但值不同。现在在我的程序的 UI 中,我有一个组合框来从用户那里选择表名。选择后,我将其存储在一个变量中,并希望使用该变量打开相应的表。

感谢 Eric Coolman 的这篇文章,我在这里编辑了我的查询。

Hashtable table1 = new Hashtable();

table1 .put("COL1", Double.toString(dvalue1));
table1 .put("COL2", value2);
table1 .put("COL3", value3);

Hashtable table2 = new Hashtable();

table2 .put("COL1", Double.toString(dvalue4));
table2 .put("COL2", value5);
table2 .put("COL3", value6);

// reading that value back:

double dvalue1 = Double.parseDouble((String)table1.get("COL1"));
double value6= Double.parseDouble((String)table2.get("COL3"));`

在这里我如何使用变量而不是 table1 和 table2?语法是什么。我是java新手。

4

2 回答 2

4

首先,您的结构看起来像是在拒绝对象:您所拥有的Hashtable对象可能应该是具有 3 个字段( 和 ; 或更易读的版本)的自定义类型col1col2对象col3

下一步:您可以简单地使用第三个变量来打开您从哪个对象读取:

Hashtable readFromMe;
if (someCondition)
  readFromMe=table1;
else
  readFromMe=table2;

Object o = readFromMe.get("COL3");

此代码将从table1if someConditionistruetable2else 中读取。

此外,上述代码前 5 行的较短版本将是Hashtable readFromMe = someCondition ? table1 : table2;.

于 2012-07-09T11:34:51.160 回答
1

将您的两个表放在另一个哈希表中,并使用密钥访问您想要的表。

Hashtable<String, Hashtable> tables = new Hashtable<String, Hashtable>();
Hashtable<String, String> table1 = new Hashtable<String, String>();

table1 .put("COL1", Double.toString(dvalue1));
table1 .put("COL2", value2);
table1 .put("COL3", value3);

tables.put("table1", table1);


Hashtable<String, String> table2 = new<String, String> Hashtable();

table2 .put("COL1", Double.toString(dvalue4));
table2 .put("COL2", value5);
table2 .put("COL3", value6);

tables.put("table2", table2);

// reading that value back:

double dvalue1 = Double.parseDouble(tables.get("table1").get("COL1"));
double value6= Double.parseDouble(tables.get("table2").get("COL3"));`
于 2012-07-09T11:39:29.927 回答