CSV数据生成降序

时间:2016-02-17 15:50:40

标签: java csv

我有一个要读取的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,因为我们正在使用旧系统。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用supercsv,它会为您提供列值映射的映射(检查方法CsvMapReader) 然后你可以根据你的要求进行迭代和分组。

希望这有帮助

答案 1 :(得分:0)

如果您正在阅读一行,则不知道当前组的组长度。所以把它分成两遍。

通过1 仅用于确定每个组的组长度。 您可以将其存储在Map<String, Integer>中,其中组名称为键,并且(到目前为止)最大组长度。 对于您必须查看的每一行,如果该组已有条目。如果是,请递增该值。如果没有为此组存储1。

然后在传递2 中,您第二次逐行读取文件。但是使用上面的地图,您已经知道当前组的最大组长度。

如果文件太大而无法将所有组存储在内存中,则应将它们存储在文件中,例如:使用RandomAccessFile。但是增加内存会更容易。