Java读取csv文件并分别列出重复发生的事件

Java读取csv文件并分别列出重复发生的事件,java,csv,Java,Csv,下面是我用来读取.csv文件和打印输出的程序,但我无法实现输入和输出中提到的以下功能。我基本上希望有单独列出的用户ID,如果它在两个不同的组中可用 我的输入是这样的: User ID Group ABC Group1 DEF Group2 ABC Group3 GHI Group4 由于ABC分为两个不同的组,因此我需要以下输出: ABC Group1 ABC Group3 你

下面是我用来读取.csv文件和打印输出的程序,但我无法实现输入和输出中提到的以下功能。我基本上希望有单独列出的用户ID,如果它在两个不同的组中可用

我的输入是这样的:

User ID       Group

ABC           Group1   
DEF           Group2
ABC           Group3
GHI           Group4
由于ABC分为两个不同的组,因此我需要以下输出:

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

解析所有用户id并将其放入HashMap>

对于每个userid,检查它是否已经存在于hashmap中,如果已经存在,则获取相应的集合并将其添加到列表的末尾。 如果hashmap不包含用户,则创建一个新的HashSet并添加组

注意:HashSet背后的想法是,它将忽略重复项

psuedo代码是这样的

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);
    }
}
for(字符串用户:用户)
{
if(hashmap.contains(用户))
{
HashSet usergroups=hashmap.get(用户);
添加(组);
}
其他的
{
HashSet-groups=newhashset();
组。添加(组);
}
}
HashMap可用于存储每个id的组。只需将该id用作键,在解析id时,只需检查是否添加了该id。如果是,只需抓取arraylist并添加组。如果不是,则创建arraylist,添加组,并将两者(id和arraylist)存储到hashmap中。