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