2017-02-11 6 views
0

Я новичок в java и пытаюсь понять, как объединить несколько treemaps в таблицу.Объедините несколько Treemaps в таблицу csv с java

У меня есть Java-программа, которая читает текстовый файл и создает treemap, индексируя слова в файле. На выходе есть отдельные слова в качестве ключа и список страниц, на которые он отображается в качестве значения. пример выглядит следующим образом:

a 1:4:7 
b 1:7 
d 2 

Теперь моя программа в настоящее время создает поток для нескольких текстовых файлов и создает Древовидные карты для каждого файла. Я хотел бы объединить эти treemaps в один выход. Так что у нас есть второй текстовый файл, который выглядит следующим образом:

a 1:2:4 
b 3 
c 7 

Конечный результат я пытаюсь создать это CSV таблицу, которая выглядит следующим образом:

key,file1,file2 
a,1:4:7,1:2:4 
b,1:7,3 
c,,7 
d,2, 

Есть ли способ объединить такие карты? В первую очередь я разработчик sql, поэтому моя идея заключалась в том, чтобы печатать каждую карту в txt-файле вместе с именем файла, а затем сворачивать этот список на основе имени файла. Это не похоже на java, как на подход к проблеме.

ответ

1

Думаю, вам нужно сделать это вручную.

я не компилировать мое решение, и оно не писать в CSV-файл, но это должно дать вам намек:

public void writeCsv(List<MyTreeMap> list) { 
    Set<String> ids = new TreeSet<String>(); 

    // ids will store all unique key in your example: a,b,c,d 
    for(MyTreeMap m:list) { 
     for(String id:m.keySet()) { 
      ids.insert(id); 
     } 
    } 

    // iterate ids [a,b,c,d] 
    for(String id:ids) { 
     StringBuffer line = new StringBuffer(); 
     line.append(id); 
     for(MyTreeMap m:list) { 
      String pages = m.get(id); 
      // pages will contains "1:4:7" like your example. 
      line.append(","); 
      line.append(pages); 
     } 
     System.out.println(line); 
    } 
} 
Смежные вопросы