我有一个Hashtable<List<Integer>, List<Triples>> ResultIPM2 = new HashTable<>()
,我想研究关键部分List<Integer>
包含三种模式{[2,3,4],[3,2,4,3], [2,4,3]}。我想要做的是,我想删除[2,4,3],因为它是[3,2,4,3]的一个子集。我怎样才能报告[2,4,3]和[3,2,4,3]。
请注意,交叉点的顺序必须与较小的列表的顺序相同。
例如,如果不是[3,2,4,3]我们有一个模式[3,2,3,4],我们就不会删除任何模式。通过&#34;删除&#34;我的意思是在报告时不显示模式。这是我的一段代码: 请不要关心其他答案,因为我必须编辑这个旧问题才能提出新问题。谢谢
Set<List<Integer>> key = resultsIPM2.keySet();
boolean maximal = false;
for(List<Integer> p1 : key){
for(List<Integer> p2:key){
if(p1.size() > p2.size()){
maximal=true;
}
else if(p1.size()> p2.size() && !p1.equals(p2) && p1.containsAll(p2)) {
maximal= false;
}
}
if(maximal){
// System.out.println("final pattern : " +p1);
}
}
}
}
现在这段代码给了我[3,2,4,3]作为输出!我想要[3,2,4,3]和[2,3,4],因为它们不是任何其他模式的子集。