我环顾四周,但似乎找不到任何我想要的东西。
我需要读取包含列标题的CSV文件,例如:
NAME;AGE;HEIGHT
dan;36;180
john;31;181
ben;30;190
我可以将哪个对象解析为read,然后我可以像这样引用它:
object.name = (string) someSortOfDataStructure["NAME"];
object.name = (int) someSortOfDataStructure["AGE"];
或
object.name = someSortOfDataStructure.getColumn("NAME");
在C#中,我可以使用像DataTable / DataRow这样的东西。
答案 0 :(得分:4)
想想OOP。您需要使用属性Person
,name
和age
创建height
类。
public class Person {
private String name;
private String age;
private String height;
// Getter and setter methods...
}
接下来,使用BufferedReader
逐行读取CSV文件。对于您希望使用line.split(";");
拆分该行的每一行,为您提供包含令牌的String[]
。
对于该行,您现在可以从令牌创建Person
;
Person person = new Person();
person.setName(tokens[0]);
person.setAge(tokens[1]);
person.setHeight(tokens[2]);
请注意,假设列的位置。如果您要删除此假设,则需要Map
标题到某个位置。
String headerLine = "NAME;AGE;HEIGHT";
String[] headers = headerLine.split(";");
Map<String,Integer> map = new HashMap<String,Integer>();
for (int i=0; i<headers.length; i++) {
map.put(headers[i], i);
}
然后,您可以按名称获取列的位置;
Person person = new Person();
person.setName(tokens[map.get("NAME")]);
person.setAge(tokens[map.get("AGE")]);
person.setHeight(tokens[map.get("HEIGHT")]);
Table
类型类是反模式。当程序员无法用对象思考时,它们往往会出现。我经常在遗留的Java应用程序中看到Table
类,并且它是一个真正的PITA来使用它们。不要这样做。
答案 1 :(得分:0)
好的......你可以使用默认的表格模型。这是为了支持秋千表,我不确定它是否能够帮助你。 http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/table/DefaultTableModel.html
答案 2 :(得分:0)
Guava library有一个Table
界面,应该是你需要的界面。