我想拥有一个类似于Map的Java集合,但是具有多个键和多个值。
示例:
假设我们有3个键,然后每个元素有3个值。
set (key ("G", "Merc", "SUV"), val ("silver", "400", "100.000"));
val v = get (key ("A4", "Audi", "Sedan"))
这样的馆藏存在于某个图书馆吗?
答案 0 :(得分:2)
最简单的方法以及我建议的方法是简单地创建2个Java类,一个是键,另一个是值。
class Key {
String str1, str2, str3;
}
class Value {
String str1, str2, str3;
}
// later on
Map<Key, Value> map = ...;
map.put(new Key("G", "Merc", "SUV"), new Value("Silver", "400", "100.000"));
map.get(new Key("A4", "Audi", "Sedan"));
当然,这不是唯一的方法,但是它是最容易维护的,并且如果您想在键中添加另一个属性,那么以后也最容易修改。
其他方法包括使用String[]
作为键和值List<String>
和/或Set<String>
。您甚至可以推出自己的Map<T>
实现,但同样,可维护性是必须考虑的因素。
答案 1 :(得分:1)
如果要执行此操作,则只需将键和一些定界符“粘合”在一起,并将键设为单个字符串。
Map<String,Value> map = new HashMap<>();
map.put(key("G", "Merc", "SUV"), new Value("Silver", "400", "100.000"));
map.get(key("A4", "Audi", "Sedan"));
public static String key(String...elements) {
return String.join("-", elements);
}
答案 2 :(得分:1)
或者结合已经提出的答案。
使用自定义类作为键,并使用MultiValueMap
作为值。