【发布时间】:2017-03-29 17:10:39
【问题描述】:
问题背景
我一直在开发一些代码,首先关注的是读取字符串和创建文件。其次,将字符串拆分为数组。然后获取数组中每个单词的索引,最后删除重复项并将其打印到不同的文件中。 我目前已经为此编写了代码,这里是一个链接https://pastebin.com/gqWH0x0(也有一个菜单系统),但它相当长,所以我没有在这个问题中实现它。
压缩方法是通过 hashmaps 完成的,获取数组的索引并将它们映射到相关的单词。这是一个例子:
原文:《海见海见海见》
输出:见[2, 4, 5],sea[0, 1, 3],
问题
下一阶段是将输出恢复到原始状态。我目前对 java 比较陌生,所以我不知道所需的技术。代码应该能够获取输出文件(如上所示)并将其放回原始文件。
我目前的想法是您只需重写此哈希图(如下)。我这样想对吗?我想我应该先检查堆栈溢出!
Map<String, Set<Integer>> seaMap = new HashMap<>(); //new hashmap
for (int seaInt = 0; seaInt < sealist.length; seaInt++) {
if (seaMap.keySet().contains(sealist[seaInt])) {
Set<Integer> index = seaMap.get(sealist[seaInt]);
index.add(seaInt);
} else {
Set<Integer> index = new HashSet<>();
index.add(seaInt);
seaMap.put(sealist[seaInt], index);
}
}
System.out.print("Compressed: ");
seaMap.forEach((seawords, seavalues) -> System.out.print(seawords + seavalues + ","));
System.out.println("\n");
如果有人有任何好的想法/答案,请告诉我,我真的很渴望解决方案!
链接到当前代码:https://pastebin.com/gqWH0x0K
【问题讨论】:
标签: java hashmap compression hashtable