![](/img/trans.png)
[英]how to read csv file by (tab) and store file to arraylist by java
[英]Read Tab Delimited file into ArrayList<ArrayList> in Java
我正在寻找一种方法来将制表符分隔的棒球统计文件读取到二维 arraylist 中。我正在使用扫描仪读取文件,但我想不出如何只将一行读取到数组列表中,在换行符处停止,然后将下一行读入下一个 arraylist。
这是我第一次尝试创建多维 arraylist,我认为这与阅读多维 arrays 大同小异。我显然错了。
public static ArrayList dataRead(String fileloc) throws FileNotFoundException {
ArrayList array = new ArrayList<ArrayList>();
Scanner s = new Scanner(new File(fileloc)).useDelimiter("\t");
ArrayList<String> rows = new ArrayList<String>();
ArrayList cols = new ArrayList();
while(s.nextLine() != null) {
cols.add(s.next());
}
return array;
}
这是我现在的代码。 将每一行读入一个字符串,用回车分隔,然后将每个字符串读入一个合适的 arraylist 是否是更好的选择?
您可以使用opencsv并将分隔符设置为制表符。 查看我提供的链接中的示例。
CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), '\t');
String [] nextLine;
while ((nextLine = reader.readNext()) != null) {
// nextLine[] is an array of values from the line
System.out.println(nextLine[0] + nextLine[1] + "etc...");
}
尽管从您的问题中不清楚您在尝试“自己动手”时的实际问题是什么
我不确定统计数据是什么样的,但使用具有键/值对的 HashMap 可能会更好,但我可能是错的。 我不知道你的数据集是什么样的。
首先,您可以使用“\t”转义字符来分隔行。 例如:
扫描器 s = new 扫描器(输入).useDelimiter("\t");
然后你可以遍历结果并将每一对添加到 map。
我认为您需要重新考虑您的数据结构,使其更有利于您尝试存储的内容。 我建议您创建一个播放器 object 并将其存储到 arraylist 中。
public class Player{
double battavg;
String name;
//add more values like rbi, etc.
public Player(name,battavg){
this.name=name;
this.battavg=battavg;
}
public String getName(){
return name;
}
public String getBattAvg(){
return battavg;
}
public setBattAvg(double battavg){
this.battavg=battavg;
}
public setName(String name){
this.name=name;
}
}
public class baseball{
public static void main(String[] args){
ArrayList<Player> list = new ArrayList<Player>();
//read in values from csv
list.add(new Player(name,battavg));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.