Java 从集合列表中提取相似集合的解决方案

Java 从集合列表中提取相似集合的解决方案,java,set,Java,Set,假设我们有5套: A1 = {field1, field2, field3} A2 = {field1, field2, field3} A3 = {field1, field2, field4} A4 = {field1, field5, field6} A5 = {field5, field6, field4} 我正在搜索java方法以检索如下结果: 1-精确集 A1 = {field1, field2, field3} & A2 = {field1, field2, field3

假设我们有5套:

A1 = {field1, field2, field3}
A2 = {field1, field2, field3}
A3 = {field1, field2, field4}
A4 = {field1, field5, field6}
A5 = {field5, field6, field4}
我正在搜索java方法以检索如下结果:

1-精确集

A1 = {field1, field2, field3} & A2 = {field1, field2, field3}
2-具有1个场差的相似集

A1 = {field1, field2, field3} & A3 = {field1, field2, field4}
A4 = {field1, field5, field6} & A5 = {field5, field6, field4}
A2 = {field1, field2, field3} & A3 = {field1, field2, field4}
A1 = {field1, field2, field3} & A4 = {field1, field5, field6}
A2 = {field1, field2, field3} & A4 = {field1, field5, field6}
A3 = {field1, field2, field4} & A4 = {field1, field5, field6}
A3 = {field1, field2, field4} & A5 = {field5, field6, field4}
3-具有2个字段差异的相似集

A1 = {field1, field2, field3} & A3 = {field1, field2, field4}
A4 = {field1, field5, field6} & A5 = {field5, field6, field4}
A2 = {field1, field2, field3} & A3 = {field1, field2, field4}
A1 = {field1, field2, field3} & A4 = {field1, field5, field6}
A2 = {field1, field2, field3} & A4 = {field1, field5, field6}
A3 = {field1, field2, field4} & A4 = {field1, field5, field6}
A3 = {field1, field2, field4} & A5 = {field5, field6, field4}

如果您使用的是java集合数据结构(),那么方法A1.retainAll(A2)将在A1和A2之间执行交集,然后您可以使用A1.size()返回类似字段的数量

下面的函数将返回两个集合之间不同元素的数量

public int diff(集合A、集合B){
如果(A.size()>B.size()){
B.保留(A);
返回A.size()-B.size();
}否则{
A.保留(B);
返回B.size()-A.size();
}
}
然后你就可以检查每一对了


例如,对于精确集,您只需要函数返回0的成对集

你们有并没有尝试过任何我们可以帮助的方法?方法:嵌套循环,也就是简单的暴力。试一试有什么困难呢?
for(int i=0;i<5;i++){for(int j=i+1;j<5;j++){int diff=0;for(var-value:A[i]){if(!A[j].contains(value)){diff++;}/*在这里打印*/}
为什么
2-具有1个字段差异的类似集合
不包括
A2和A3