【发布时间】:2014-03-21 04:30:01
【问题描述】:
我的程序在内存中生成了两组,我不想将它们写入文件。每组都有一组线。每行都是一系列数字。我想有效地检查这两个文件在java中是否具有相同的行集(java是必须的)。
例如:
set1 :
1 2 3
3 4 5 6
1 2 4 5 7
8
7
1 2 4
set2 :
7
3 4 5 6
1 2 4 5 7
1 2 3
8
1 2 4
所以,在 set1 和 set2 的情况下,行的集合是相同的,它们只是混乱。因此,对于这两组作为输入,我在 java 中的算法应该返回 true。你能在这方面帮助我吗?我使用哈希表实现了它,但是它用处不大。
【问题讨论】:
-
如何在内存中存储你的集合?我的意思是你使用什么样的数据结构?
-
您是否尝试过使用
HashSet<String[]>或HashSet<List<String>>? -
对于每个文件,将每一行读取为每行一个
List<Integer>,将这些列表存储在HashSet中。那么如果set1.containsAll(set2) && set2.containsAll(set1),你就可以走了。或者,如果您不担心空白差异会导致误报,请将每一行存储为String。 -
如果列表是动态变化的,即每一行都有新的数字,而一些数字被删除。然后,HashSet 不允许我修改列表。即,我无法检索列表、修改它并将其添加回来。或者我可以这样做吗?
标签: java set intersection