2017-02-11 6 views
0

私はjavaを初めて使い、いくつかのツリーマップをテーブルに結合する方法を理解しようとしています。複数のTreemapsをJavaのcsvテーブルに結合する

私は、テキストファイルを読み込んで、単語をファイルに索引するツリーマップを作成するJavaプログラムを持っています。出力には、個々の単語がキーとして表示され、値として表示されるページのリストが表示されます。例は次のようになります。

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

は今、私のプログラムは、現在、いくつかのテキストファイルのためのスレッドを作成し、ファイルごとにツリーマップを作成します。これらのツリーマップを1つの出力に結合したいと思います。だから我々はこのようになります2番目のテキストファイルを持っていると言う:

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

私はあなたが手動で行う必要があると思う。

私は私のソリューションをコンパイルdidntは、それは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); 
    } 
} 
関連する問題