在我的应用程序中,我有一些带有唯一键的小表(文件)(其中大多数都有两个或多个组合键 - 组合键)。我想为每个小表创建一个类,并将数据加载到java集合中。该对象将读取文件并将数据加载到java集合中。然后我想通过键值从这个集合中获取数据,这样我就可以访问所有字段。我的问题是我应该使用哪个集合或说哪个集合支持多个密钥?一个指向考试的链接会很棒。提前致谢!
答案 0 :(得分:4)
假设我已正确阅读了您的问题(对于“多个密钥”存在一些歧义),您想要的是为密钥本身定义一个类,其中包含多个字段并实现equals()
和{{1}以这种方式将对象用作hashCode()
键。
这是一个非常简单的框架实现(未经过测试,省略了一些错误处理):
HashMap
答案 1 :(得分:2)
不完全确定多个键的含义。每个“表”的类,你可以存储在一个集合中,并使用一个键/值对来获取HashMap给我。
答案 2 :(得分:1)
Hashtable可能最适合存储每个表的内容。 Hashtable基本上允许您添加任意数量的对象,每个对象都有一个唯一的密钥。
我的建议是为每个表文件执行以下操作。在我的示例中,我假设您将表文件的每一行读入一个名为Entry ...的对象
// Create a new Hashtable, where the contents will be a String (the unique key) and an "Entry" object for the table row of data
Hashtable<String,Entry> entriesTable = new Hashtable<String,Entry>();
for (each line in your table file){
// Generate the unique value for this row. If there are multiple columns that make up the key,
// just join them together into a single String
String key = uniqueColumn1 + uniqueColumn2 + ...;
// Create an object for your row, if you dont have one already.
Entry row = new Entry(line);
// Add the entry to the Hashtable
entriesTable.put(key,row);
}
如果您想从表中获取一行,您可以通过其独特的价值来询问它......
Entry entry = entriesTable.get(uniqueColumn1 + uniqueColumn2 + ...);
您可以添加任意数量的对象,前提是每个对象都有唯一的密钥。 Hashtable支持添加和删除值等,因此非常容易使用。
如果需要,您还可以将Hashtable转换为数组,如果需要获取Hashtable的全部内容,则可以获取用于遍历每个条目的Enumerator。