附件是CSV文件。 编写一个Java程序来读取该文件中的数据,并在不同的地图中填充每个服务并打印出来。
CSV File
--------
CompanyName location foundedby profit noofyears
HCL chennai shivnadar 3.2 8
XYZ chennai XCV 9 10
在此处如何将列名称作为键传递到两个单独的地图中(HCL
的一个地图和XYZ
的另一个地图)
每一行都有单独的映射。
我的代码是
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class ReadServicesExercise {
public static void main(String[] args) {
String file = "D://ReadCsv.csv";
try{
BufferedReader br = new BufferedReader(new FileReader(file));
Map<Integer,String> values = new HashMap<Integer,String>();
String line = "";
StringTokenizer tokens = null;
int lineNo = 0;
int tokenNo = 0;
//reading the csv file line by line
while ((line = br.readLine()) != null) {
//increment the lineNo after every line is being read
lineNo++;
System.out.println("Reading Line No. : "+lineNo);
tokens = new StringTokenizer(line, ",");
while (tokens.hasMoreTokens()) {
//increment the token no!
tokenNo++;
//Print csv values
System.out.print(tokens.nextToken() + " ");
//Need to write the values to the hashmap
values.put(arg0, arg1);
}
System.out.println();
//reset token number
tokenNo = 0;
}
}
catch(Exception ex){
System.err.println("CSV file not found : " + ex);
}
}
}
但它会打印每一行,但我希望第一行列名作为键传递,相应的值应显示每个公司名称。
答案 0 :(得分:0)
您可以使用地图中的地图来实现此目的。创建与每一行相对应的地图,列名为键,单元格值为值。现在父映射将包含一个唯一的行值作为键,比如公司名称,并映射为值。
在重新启动时,首先使用唯一键然后从该地图中删除行地图,使用他的列名作为键来获取值。
行地图:地图(字符串,字符串)
父地图:地图(字符串,地图)