在Java中,从CSV中读取具有命名行和命名列的矩阵

时间:2013-04-03 14:23:50

标签: java matrix

我有一个CSV文件,其中包含一组对象之间的相关系数矩阵(在下面的示例中,它是四个对象u101,u102,u103,u104)。这些文件使用对象名称作为行名称和列名称,如下所示:

        u101,   u102,   u103,   u104
u101,   1.0,    0.2,    0.1,    0.4
u102,   0.2,    1.0,    0.5,    0.8
u103,   0.1,    0.5,    1.0,    0.9
u104,   0.4,    0.8,    0.9,    1.0

我现在需要做的是:将Java文件读取为Java中的某种矩阵格式,以便我可以按名称访问相关系数。基本上,我需要实现一个功能:

double getValue(String arg0, String arg1) {
    […]
}

使用

调用时
getValue("u101", "u104")

然后该函数应返回0.4。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

你需要2个地图和2维数组(或arraylist)。

  • 第一张地图应包含作为关键字的col名称和作为值的col位置,即('u101',0),('u102',1)等
  • 第二张地图应包含行名称作为键,行位置应包含值
  • 2d数组应该有数据,即数字本身

因此,当您接到对方法的调用时,您确实喜欢

return myArray[rowmap.get('rowname')][colmap.get('colname')];

答案 1 :(得分:0)

从文件中读取双打:Reading double values from a file

然后将您读取的值存储在双打的HashMap中。使用行名和列名构造hashmap键。要访问u102处的元素,请执行以下操作:

hashmap.put("u102-u103", 0.5);
x = hashmap.get("u102-u103");