2012-04-25 8 views
0

以下は、.csvファイルを読み込んで出力するためのプログラムですが、私の入出力で述べたように以下の機能を実現することはできません。基本的に2つのグループに分かれていれば、別々のユーザーIDを表示したいと思っています。Java csvファイルを読み込み、繰り返し発生するものを個別に表示する

私の入力のようなものになるだろう:ABCは、2つの異なるグループに提供されていますので、私のように出力を必要とする

User ID  Group 

ABC   Group1 
DEF   Group2 
ABC   Group3 
GHI   Group4 

ABC  Group1 
ABC  Group3 

あなたは助けてくださいことはできますか?

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.util.StringTokenizer; 

public class dumpRead { 
    public static void main(String[] args) { 
     try { 

      //csv file containing data 
      String strFile = "C:/Tracker/read/data.csv"; 

      //create BufferedReader to read csv file 
      BufferedReader br = new BufferedReader(new FileReader(strFile)); 
      String strLine = ""; 
      StringTokenizer st = null; 
      int lineNumber = 0, tokenNumber = 0; 

      //read comma separated file line by line 
      while((strLine = br.readLine()) != null){ 
       lineNumber++; 

       //break comma separated line using "," 
       st = new StringTokenizer(strLine, ","); 

       while(st.hasMoreTokens()){ 
        //display csv values 
        tokenNumber++; 
        System.out.println("Token # " + tokenNumber 
        + ", Token : "+ st.nextToken()); 
       } 

       //reset token number 
       tokenNumber = 0;       
      } 
     } 
     catch(Exception e) { 
      System.out.println("Exception while reading csv file: " +  e);     
     } 
    } 
} 
+1

HashMap >は、各IDのグループを格納するのに便利です。単にIDをキーとして使用し、IDを解析するときに、追加されているかどうかを確認してください。そうであれば、arraylistをつかんでグループを追加してください。そうでない場合は、arraylistを作成し、グループを追加し、両方(idとarraylist)をハッシュマップに格納します。 –

答えて

1

パース全てのユーザIDのと、それは、対応するセットを取得し、追加し、すでに存在する場合、それは、ハッシュマップにすでにあるかどうかを確認、各ユーザーIDについてのHashMap>

に入れますそれはリストの最後にある。 ハッシュマップ、ユーザーが含まれている、新しいHashSetのを作成し、グループ

注追加しない場合:HashSetの背後にある考え方は、それは擬似コードはこのような何か、

なります重複

を無視しています

for(string user: users) 
{ 
    if(hashmap.contains(user)) 
    { 
     HashSet<Sting> usergroups = hashmap.get(user); 
     usergroups.add(group); 
    } 
    else 
    { 
     HashSet<String> groups = new HashSet<String>(); 
     groups.add(group); 
    } 
} 
関連する問題