如何在java?</integer>中找到两个arrayList <integer>之间的匹配项(交集)

时间:2014-09-02 17:49:40

标签: java arraylist intersection

我有一个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],因为它们不是任何其他模式的子集。

0 个答案:

没有答案