我正在寻找一种方法来将棒球属性的制表符分隔文件读成二维arraylist。我正在使用扫描仪来读取文件,但我想不出如何只读取一行到数组列表中,在换行符处停止,然后将下一行读入下一个arraylist。
这是我第一次尝试创建一个多维arraylist,我认为它与读取多维数组非常相似。我显然错了。
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是不是更好的选择?
答案 0 :(得分:4)
您可以使用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...");
}
虽然从你的问题中不清楚你在尝试'推销自己'时的实际问题是什么
答案 1 :(得分:1)
我不确定统计信息的外观,但最好使用具有键/值对的HashMap,但我可能错了。我不知道你的数据集是什么样的。
首先,您可以使用&#34; \ t&#34;来划分线条。逃避性格。 例如:
扫描仪s =新扫描仪(输入).useDelimiter(&#34; \ t&#34;);
然后你可以遍历结果,并将每一对添加到地图中。
答案 2 :(得分:1)
我认为您需要重新考虑您的数据结构,使其更有利于您尝试存储的内容。我建议您创建一个播放器对象并将其存储到一个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));
}
}