我有一个要读取的CSV文件,示例数据如下:
SEQ NAME GROUP
1 MARK A
2 KEVIN A
3 JOE A
1 MARY B
2 JANE B
3 ANN B
4 MAY B
我找不到一种简单的方法来用Java来读取上面的CSV文件并添加另一列,它只是REV
列的降序序列:
SEQ REV NAME GROUP
1 3 MARK A
2 2 KEVIN A
3 1 JOE A
1 4 MARY B
2 3 JANE B
3 2 ANN B
4 1 MAY B
我知道如何使用缓冲读卡器或扫描仪,但不知道如何根据组列创建反向序列,因为您必须知道每个组的最大长度。
有什么想法吗?
更新:很抱歉,我必须使用没有任何库的普通java,因为我们正在使用旧系统。
答案 0 :(得分:0)
您可以尝试使用supercsv,它会为您提供列值映射的映射(检查方法CsvMapReader) 然后你可以根据你的要求进行迭代和分组。
希望这有帮助
答案 1 :(得分:0)
如果您正在阅读一行,则不知道当前组的组长度。所以把它分成两遍。
通过1 仅用于确定每个组的组长度。
您可以将其存储在Map<String, Integer>
中,其中组名称为键,并且(到目前为止)最大组长度。
对于您必须查看的每一行,如果该组已有条目。如果是,请递增该值。如果没有为此组存储1。
然后在传递2 中,您第二次逐行读取文件。但是使用上面的地图,您已经知道当前组的最大组长度。
如果文件太大而无法将所有组存储在内存中,则应将它们存储在文件中,例如:使用RandomAccessFile
。但是增加内存会更容易。