Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,从CSV中读取具有命名行和命名列的矩阵_Java_Matrix - Fatal编程技术网

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

在Java中,从CSV中读取具有命名行和命名列的矩阵,java,matrix,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

我有一个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将CSV文件读入某种矩阵格式,这样我就可以按名称访问相关系数。基本上,我需要实现一个功能:

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

getValue("u101", "u104")
然后该函数应返回0.4


我如何才能做到这一点?

要从文件中读取双精度:

然后将读取的值存储在双精度散列映射中。使用行和列名构造hashmap键。要访问u102、u103处的元件,请执行以下操作:

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

您需要2个贴图和一个二维数组(或arraylist)

  • 第一个映射应包含列名称作为键,列位置作为值,即('u101',0),('u102',1)等
  • 第二个映射应包含行名称作为键,行位置作为值
  • 2d数组应该有数据,即数字本身
因此,当您收到对方法的调用时,您确实喜欢

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

(您可能希望对行/列名称使用
next
,对单元格使用
nextDouble
)。将字符串转换为行/列索引-
映射
。如果行/col
i
的命名总是
u(101+i)
,那么您可以简单地
substring
parseInt
。这可能有助于说出您建议的确切内容的HashMap。