JAVA程序,用于检查两组数字列表是否相同

JAVA程序,用于检查两组数字列表是否相同,java,set,intersection,Java,Set,Intersection,我的程序在内存中生成两个集合,我不想将它们写入文件。每组有一组线。每一行都是一系列的数字。我想高效地检查这两个文件在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中是否具有相同的行集(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。在这方面你能帮我吗。我使用哈希表实现了它,但是它没有什么用处。

如果您的行是字符串,您可以这样做

List<String> a = new ArrayList<>(Arrays.asList(new String[] { "1 2 3",
                "3 4 5 6", "1 2 4 5 7", "8", "7", "1 2 4" }));
List<String> b = new ArrayList<>(Arrays.asList(new String[] { "7",
                "3 4 5 6", "1 2 4 5 7", "1 2 3", "8", "1 2 4" }));

if (a.size() == b.size()) {
    a.removeAll(b);
    if (a.isEmpty())
        System.out.println("A and B are the same sets");
}
List a=newarraylist(Arrays.asList)(新字符串[]{“1 2 3”,
"3 4 5 6", "1 2 4 5 7", "8", "7", "1 2 4" }));
列表b=新的ArrayList(Arrays.asList)(新字符串[]{“7”,
"3 4 5 6", "1 2 4 5 7", "1 2 3", "8", "1 2 4" }));
如果(a.size()==b.size()){
a、 removeAll(b);
如果(a.isEmpty())
System.out.println(“A和B是相同的集合”);
}

如何在内存中存储集合?我的意思是,您使用的是什么样的数据结构?您是否尝试过使用
HashSet
HashSet
?对于每个文件,将每行读取为一个
List
,将这些列表存储在
HashSet
中。然后如果
set1.containsAll(set2)和&set2.containsAll(set1)
,您就可以开始了。或者,如果您不担心空格差异会导致误判,则将每一行存储为
字符串。
。如果,列表会动态更改,即每一行都会得到新的数字,而其中一些数字会被删除。然后,HashSet不允许我修改列表。。也就是说,我无法检索列表、修改列表并将其添加回。或者我可以这样做吗?谢谢。但是,每行都有数字,而不是字符串。每个文件在内存中都会动态变化。假设每次更改时,如何更新哈希集?第一次,我创建了列表并将其添加到hashset中。下次列表更改时,我无法更改列表,因为哈希集不允许我检索列表。我该怎么做呢。