我的地图声明为:
ListMultimap<String, String> myMutlimap = ArrayListMultimap.create();
我已经能够只打印键了:
TEN
TT2
TP1
TP2
TRK
TAL
COM
COM
COM
TCO
TPA
TYE
或值或键和值:
TEN=children's story
TT2=black star
TP1=black star
TP2=5/13
TRK=This old album
COM=This album is good
COM=This album is great
COM=This album is awesome
TCO=hip-hop
TPA=1/2
TYE=2002
但是,当我尝试列出&#34; COM&#34;的价值时我得到的关键:
[This album is good, This album is great, This album is awesome ]
如何获得&#34; COM&#34;的各个值?键而不依赖于字符串拆分&#34; =&#34;签字?我想如果我可以在同一行上获得键和值,它也可以很容易地将它们分配给变量。
TEN children's story
TT2 black star
TP1 black star
TP2 5/13
COM This album is good
COM This album is great
COM This album is awesome
or
COM This album is good
This album is great
This album is awesome
我知道我可以使用这些键和值作为变量的方法,但是,我正在寻找一种干净简洁的方法来做到这一点 - 这也打印得很好。
编辑: 根据我的要求,我尝试了一些方法:
for (Object key : myMutlimap.keys()) {
System.out.println(key);
}
for (Object value : myMutlimap.values()) {
System.out.println(value);
}
for (Object value : myMutlimap.entries()) {
System.out.println(value.toString());
}
for (String value : myMutlimap.keySet()) {
System.err.println(value);
System.out.println(myMutlimap.get("COM"));
}
答案 0 :(得分:3)
只需使用get()
并迭代它返回的列表即可单独获取值。
List<String> values = myMutlimap.get("COM");
for (String s: values) {
System.out.println(s);
}
答案 1 :(得分:1)
你没有使用Multimap
的类型参数(甚至是方法的返回类型),所以当然Object
不会让你失望远。
使用Multimap<String, String>
的实例,您可以使用以下(有趣的)方法:
Map<String, Collection<String>> asMap()
获取Map
视图,其中每个键都包含值集合Collection<Map.Entry<String, String>> entries()
获取各个条目,即每个(键,值)对Collection<String> get(String key)
获取给定密钥的所有值Multiset<String> keys()
获取所有没有重复项的密钥和能够知道每个密钥与每个密钥相关联的数量Set<String> keySet()
获取Set
个密钥,同样没有重复Collection<String> values()
获取Multimap
中存在的所有值的集合,而不知道它们与哪个键相关联知道如果你想打印给定键的值,你只需要这样做:
for (String value : myMultimap.get("COM")) {
System.out.println(value);
}
如果要对所有可用键执行相同操作,可以使用以下几种方法:
迭代键并查找其值:
for (String key : myMultimap.keySet()) {
for (String value : myMultimap.get(key)) {
System.out.println(key + " " + value);
}
}
迭代Multimap
((键,值)对的条目:
for (Map.Entry<String, String> entry : myMultimap.entries()) {
String key = entry.getKey(), value = entry.getValue();
System.out.print(key + " " + value);
}
迭代Map
视图的条目:
for (Map.Entry<String, Collection<String>> entry :
myMultimap.asMap().entrySet()) {
String key = entry.getKey();
Collection<String> values = entry.getValue();
for (String value : values) {
System.out.println(key + " " + value);
}
}
这种方法的优点是可以访问每个键的值集合(因此你有一个很好的集合及其所有可用的方法,如size()
,或者可以进一步操作),比如选项1,但,而不需要在每个密钥的Multimap
中进行额外查找。