static HashMap<String, HashMap<String, List<Integer>>> BIGMAP= new HashMap<String, HashMap<String, List<Integer>>>();
如果我要打印出来,这是一个哈希图,这就是我得到的:
SortedSet<String> keys = new TreeSet<String>(BIGMAP.keySet());
for (String key : keys) {
HashMap<String, List<Integer>> value = kmap.get(key);
System.out.println(key + " : " + value);
}
a.txt : {a=[20], to=[10]}
b.txt : {a=[4, 20], by=[16], is=[2], to=[13, 22]}
c.txt : {a=[15], as=[16, 17], in=[34], do=[9], to=[14]}
所以我试图通过每个密钥a.txt(String)的上面的“ BIGMAP”进行迭代,其中有一个值是另一个映射结构 HashMap<String, List<Integer>>
...
输出:
a [15],[20],[4, 20],
as [16, 17],, ,, ,
by , ,, ,[16],
...so on...
...so on...
...so on...
预期/期望的输出
a 20, 4:20 ,15
as , , 16:17
by , 16 ,
打印格式应该与上面类似,但显然应该从每个文本文件(字符串)中按顺序打印,这是外部哈希图中的键
例如,a 20, 4:20 ,15
“ a”是单词FOR该单词,20
来自于其中key是a.txt
and4:20
来自fromb.txt
且15
来自from的值c.txt
如您所见,我在那里有东西,但是它不能完全满足我的需求。如果有多个数字,则冒号是必需的。有时可能是4:20:50:92
这将完成Java 8中的工作。这不是我的最佳工作,但已通过示例值成功测试。
BIGMAP.values()
.stream()
.flatMap(m -> m.keySet().stream())
.distinct()
.sorted()
.map(k -> k
+ " "
+ BIGMAP.entrySet()
.stream()
.sorted(comparing(Entry::getKey))
.map(e -> e.getValue()
.getOrDefault(k, Collections.emptyList())
.stream()
.map(String::valueOf)
.collect(joining(":")))
.collect(joining(", ")))
.forEachOrdered(System.out::println);
产生以下输出:
a 20,4:20,15 as,, 16: 17 by,16, do,,9 in,,34 是,2, to 10,13:22,14
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句