我的.ini文件可以有多个键和多个值吗?如果是这样的话?
我知道我们可以使用list或multimaps来获得具有多个值的单个键但是我可以为多个键复制相同的概念 像这样 - 键-a,b,c 值 - (对于第1行)d,e,f等多行 我真正想要的是我的ini文件
key1||key2||key3
value1||value2||value3
value4||value5||value6
key1映射到value1和4,依此类推
并且所有这些都应该在一个地图中
答案 0 :(得分:1)
重新编辑,看起来您想要通过任何键进行检索。所以你真正拥有的是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);
答案 1 :(得分:0)
您可以使用Apache Common Collection的MultiKeyMap:http://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections/map/MultiKeyMap.html
[编辑:如果你不想使用它,你可以通过扩展Map并提供类似于MultiKeyMap中给出的实现来编写你自己的MuliKeyMap实现。]