这是Map
,其中String
键(文本文件)和值(整数List
):
aaa.txt : {(The=[11], put=[8], I'm=[1], by=[5], you,=[3, 7], the=[4, 10], key=[6, 9]}
bbb.txt : {do.=[12], to=[6], I'm=[1], what=[9], you=[4, 10], want=[11], sure=[2]}
ccc.txt : {just=[10], need=[7], you,=[6], it=[5], than=[3], It's=[1], the=[11]}
我想以这种格式打印出来:
you, 3:7, , 6
如您所见,我想打印上述格式"您,"位于aaa.txt
和ccc.txt
但不是bbb.txt
,因此应该打印出单词you, 3:7, ,6
。
如果在bbb.txt中找不到you
,那么我们应该you, 3:7, "space", 6
。所以空格是显示第二个文本文件中没有单词。
就像我想要在MAP的值中打印每个单词并保持。这是上面
的地图结构HashMap<String, HashMap<String, List<Integer>>> COOLMAP = new HashMap<String,HashMap<String, List<Integer>>>();
EXPECTED/WANTED OUTPUT
a 20, 4:20 ,15
as , , 16:17
by , 16 ,
答案 0 :(得分:1)
您可以尝试迭代每个Map以获取所有键。使用HashSet可以消除重复。
HashSet<String> keys = new HashSet<>();
for (Entry<String, HashMap<String, List<Integer>>> entry : COOLMAP.entrySet()) {
for (Entry<String, List<Integer>> innerEntry : entry.getValue().entrySet()) {
String innerKey = innerEntry.getKey();
keys.add(innerKey);
}
然后使用键在地图中搜索值。
String temp;
Iterator it = keys.iterator();
while (it.hasNext()) {
temp = (String) it.next();
System.out.print(temp + ", ");
for (Entry<String, HashMap<String, List<Integer>>> entry : COOLMAP.entrySet()) {
boolean hasValue = false;
for (Entry<String, List<Integer>> innerEntry : entry.getValue().entrySet()) {
String innerKey = innerEntry.getKey();
if (innerKey.equals(temp)) {
System.out.print(innerEntry.getValue() + ", ");
hasValue = true;
}
}
if (!hasValue) {
System.out.print(", ,");
}
}
System.out.println();
}