我应该使用什么数据结构来摆脱[]?

时间:2017-01-28 03:57:00

标签: java

我有一个使用TreeMap存储索引的程序。

TreeMap<String,Set<Integer>> map = new TreeMap<String,Set<Integer>>();

然后我使用PrintWriter将地图保存为txt文件。

PrintWriter printWriter = new PrintWriter(outputFile);

for(Map.Entry<String,Set<Integer>> entry : map.entrySet()){
    printWriter.println(entry.getKey()+" "+entry.getValue());
}

printWriter.flush();
printWriter.close();

我正在尝试使输出outputFile看起来像这样:

    ! 5
    "$200 218
    "'deed 115
    "'deed, 304
    "a 5,6,22,28,148,176,302,347,387,401,410,442

相反,我得到了这个:

    ! [5]
    "$200 [218]
    "'deed [115]
    "'deed, [304]
    "a [5,6,22,28,148,176,302,347,387,401,410,442]

我怀疑括号是因为我使用了Set,但我不知道应该使用什么来获取括号。

2 个答案:

答案 0 :(得分:2)

请记住,Set是一种集合,因此当您想要在文件上打印它们的值时,会用括号括起来。如果要删除此括号,请测试以下代码:

PrintWriter printWriter = new PrintWriter(outputFile);

for(Map.Entry<String,Set<Integer>> entry : map.entrySet()){
    printWriter.print(entry.getKey()+" ");
    for(Integer value : entry.getValue()) {
        printWriter.print(value + " ");
    }
    printWriter.print("\n");
}

所以你没有看到这个括号。

问候!

答案 1 :(得分:1)

getValue()为您返回Set,这就是您获得这些括号的原因。

您可以遍历集合的元素并打印它们 -

for (Map.Entry<String, Set<Integer>> entry : map.entrySet()) {
  printWriter.print(entry.getKey()+ " ");
  for( Integer setElement : entry.getValue()) {
     printWriter.print(setElement + " ");
  }
  printWriter.println();
}