重新编辑,看起来您想通过任何键检索。所以你真正拥有的只是一张String : List 地图。
只需遍历该文件,在|| 上拆分每一行,然后将第一个条目添加到第一个键的列表中,将第二个条目添加到第二个键的列表中,等等。
非常粗略的类似 Java 的伪代码:
Map<String, List> map = HashMap<String, List>();
String line;
String[] entries;
int index;
String[] keys;
//...open file...
// First line is keys
line = source.readLine();
if (line == null) {
// File is empty
}
else {
// Add the keys
keys = new String[entries.size()];
index = 0;
for (String key : entries) {
keys[index++] = key;
map.put(key, new LinkedList());
}
// Process entries
while ((line = source.readLine()) != null) {
entries = line.split("\\|\\|");
index = 0;
for (String entry : entries) {
if (index >= keys.length) {
break;
}
map.get(keys[index++]).add(entry);
}
}
}
...或类似的东西。
原始答案,仅供以后发现此问题并想另辟蹊径的人使用:
我可以通过两种方式阅读您的问题:
如果您的意思是要将List 存储在多个键下并使用其中任何一个来检索它,您可以这样做:
map.put(key1, list);
map.put(key2, list);
map.put(key3, list);
// ...later
list = map.get(key1); // or key2, or key3
如果您的意思是要使用 所有 键而不是单独的键来检索,那么从概念上讲,这只是一个键。您可以从任何Map 或List 类派生,根据您对“相同”键的定义添加您自己的equals 和getHashCode,然后使用它:
map.put(specialMultiKey, list);
// ...later
list = map.get(specialMultiKey);