Java 从n行文本文件中查找等价类

Java 从n行文本文件中查找等价类,java,equivalence-classes,Java,Equivalence Classes,我有一个n行文本文件: 1:1,2,…1,1 第二:1,2,…0,1 第三:2,1,…,1,0 第四:2,2,…,0,1 第n个:1,2,…,1,1 每行有40个数字,用逗号分隔。这些数字的索引范围为1到40。例如,第1行1,2,…0,1;1被索引为1,2被索引为2,0被索引为39,最后1被索引为40 我想为每个索引创建等价类,例如 索引1:[1,2][3,4][n] 索引2:[1、2、4、n][3] 索引39:[第1、3、n][2、4] 索引40:[1、2、4、n][3] 我正在考虑使用Ha

我有一个n行文本文件:

1:1,2,…1,1

第二:1,2,…0,1

第三:2,1,…,1,0

第四:2,2,…,0,1

第n个:1,2,…,1,1

每行有40个数字,用逗号分隔。这些数字的索引范围为1到40。例如,第1行1,2,…0,1;1被索引为1,2被索引为2,0被索引为39,最后1被索引为40

我想为每个索引创建等价类,例如

索引1:[1,2][3,4][n]

索引2:[1、2、4、n][3]

索引39:[第1、3、n][2、4]

索引40:[1、2、4、n][3]

我正在考虑使用
HashMap
,但是通过这种方式,我需要在内存中维护40个ArrayList。这很困难,因为文本文件有点大(n=数百万行)

由于我是Java新手,我不知道上述方法是否有效?或者有没有更好的方法来实现这一点。只有想法就足够了


多谢各位

如果您有空间问题,您可以一个接一个地进行索引,即读取文件40次。如果您试图在编程竞赛中解决一个问题,那么您不应该将输入存储在内存中,而是将其分块处理并丢弃。Java完全能够存储列表映射,这取决于分配给它的内存量。在算法问题中,内存需求很可能是指数空间,这意味着通常有更聪明的方法来解决它。@Henry已经提供了一种有效的方法。如果您想检查实时内存使用情况,可以尝试使用
visualvm
来监视它。明白了。感谢大家的支持。:)