2017-01-28 12 views
1

У меня есть программа, которая использует 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(); 

Я пытаюсь сделать вывод файл_вывода выглядеть следующим образом:

! 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, но я не знаю, что я должен использовать, чтобы не получить скобки.

+0

Вы можете написать класс, который обертывает 'Set' и переопределяет метод' toString() 'этого класса. –

ответ

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(); 
} 
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"); 
} 

Таким образом, вы не видите этого скобки больше.

С уважением!