用什么结构从CSV文件读取数据?

时间:2013-08-29 15:13:37

标签: java csv multidimensional-array

我仍然遇到问题创建一个数组来存储我的CSV文件的信息。 这是我的csv文件的一个例子。

Time;Data0;Data1;Data2;
27.08.2013 00:00:00;nan;nan;nan;
27.08.2013 00:10:00;0;1;2;

如您所见,它们有3种类型。 -String:列的名称(例如Time)或nan -Notanumber-。 -Double:适用于Data0Data1Data2的值。 -Timestamp:表示Time值。

列的名称始终位于文件的第一行。 我可以有非常多的行和列。

现在我的问题:获取这些信息的最简单方法是什么,并将它们存储在类似数组的表单中? 我需要轻松访问信息,例如搜索名为Data0的字段,我希望能够访问nan0

我做了什么:我试图将其存储到地图中,但这不是我想要的(或者显然我没有正确使用它)。此外,我只限于两个元素,我有三个。 我也尝试在数组中执行此操作,但因为只能在Java中的一个类型之后定义数组,所以我尝试在类之后创建它:

public class StorageArray {
    String nameColumn;
    Double contentLine;
    Timestamp time;
}

但后来我无法弄清楚如何将不同类型存储在我班级的不同变量中。

我是Java初学者,所以也许有一种简单的方法可以做我想要的事情? 如果您希望我提供更多代码,我可以,但我想让问题尽可能简单。

一位朋友告诉我使用内省对象关系映射(ORM)。但对我来说似乎很难。

1 个答案:

答案 0 :(得分:0)

我认为你不需要Double contentLine

使用LinkedHashMap<String /*nameColumn*/,Timestamp /*time*/ >

地图中存储的索引就是你的行。

其他方式,请使用Linkedlist<SomeYourClass>,其中SomeYourClass表示您的行(我认为它很容易处理):

public class Row
{
List<String> nameColumnList;
//Double contentLine; /* you don't need it*/
Timestamp time;
// ...
}