如何获取压缩文件(通过索引)并重新创建原始文件? (JAVA)

时间:2017-03-29 17:10:40

标签: java hashmap compression hashtable

问题背景

我一直在开发一些专注于首先阅读字符串和创建文件的代码。其次,将字符串拆分为数组。然后获取数组中每个单词的索引,最后删除重复项并将其打印到不同的文件。 我目前已经为此创建了代码https://pastebin.com/gqWH0x0(也有一个菜单系统),但是它很长,所以我没有在这个问题中实现它。

压缩方法是通过哈希映射完成的,获取数组的索引并将它们映射到相关的单词。这是一个例子:

原文:“海海见海看见”

输出:见[2,4,5],海[0,1,3],

问题

下一阶段是将输出恢复到原始状态。我目前相对较新的java,所以我不知道所需的技术。代码应该能够获取输出文件(如上所示)并将其放回原始文件中。

我目前的想法是你只需要重写这个hashmap(下面)。我是否正确地想到这一点?我以为我应该首先检查堆栈溢出!

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

1 个答案:

答案 0 :(得分:0)

首先,您必须使用示例:

将压缩行中的索引(es)与单词分开
.nav {
  display: flex;
  flex-direction: column-reverse;
}

获取以下字符串:

"see[2, 4, 5],sea[0, 1, 3],"

每个人必须阅读索引,例如首先:

"see[2, 4, 5]" and "sea[0, 1, 3]"

现在只需在给定索引处的ArrayList(或数组)中写入单词。

对于前两个步骤,您可以使用正则表达式查找每个单词和索引列表。然后使用String.split和Integer.parseInt获取所有索引。

2, 4 and 5

现在只需检查结果列表是否足够大,并在找到的索引处设置单词。