循环通过多地图

时间:2015-01-15 11:26:18

标签: iterator multimap

我有这样的多地图TreeMap[String,List<String>]

{DLK_1086686311826_10025=[AufAufVerbindung, Doppelkante 1, AUF_1086686287581_9999, AUF_1060589919844_59496],
DLK_1086686485796_10173=[AufAufVerbindung, Doppelkante 1, AUF_1086686329972_10049, AUF_1060589919844_59496],
DLK_1087469315294_9204=[AufAufVerbindung, Doppelkante 1, AUF_1079023138936_6682, AUF_1060589919844_59496],
DLK_1421268558017_1742=[AufAufVerbindung, Part-Of-Relation 1, AUF_1421268533080_1741, AUF_1087981634453_7022],
DLK_1421268747905_1778=[AufAufVerbindung, Part-Of-Relation 3, AUF_1421268719761_1776, AUF_1421268533080_1741],
DLK_1421268798097_1780=[AufAufVerbindung, Part-Of-Relation 2, AUF_1421268568003_1743, AUF_1087981634453_7022], 
DLK_1421272459527_1783=[AufAufVerbindung, Part-Of-Relation 4, AUF_1087981634453_7022, AUF_1421272434570_1781]}

我想循环并获得如下结果。我该如何遍历这个多图? :

{AUF_1060589919844_59496=[AUF_1086686287581_9999, AUF_1086686329972_10049, AUF_1079023138936_6682],
 AUF_1087981634453_7022=[AUF_1421268533080_1741,AUF_1421268568003_1743], 
 AUF_1421268533080_1741=AUF_1421268719761_1776],
 AUF_1421272434570_1781=AUF_1087981634453_7022]}

我已编写此代码,但它也将我不想要的所有值添加到地图中:

    public TreeMap<String, List<String>> findCombiFunctions() {
    ArrayList<String> combiFunc = new ArrayList<String>();
    Set<String> tempThird = new HashSet<String>();
    for (Entry<String, List<String>> entryAufAuf : map_AufAufVerbindung
            .entrySet()) {
        tempThird.add(entryAufAuf.getValue().get(3));
        for (String thirdVal : tempThird) {
            if (thirdVal.equals(entryAufAuf.getValue().get(3))) {
                System.out.println(thirdVal + " "
                        + entryAufAuf.getValue().get(2));
                combiFunc.add(entryAufAuf.getValue().get(2));
                map_combiFunc.put(entryAufAuf.getValue().get(3), combiFunc);
            }
        }
    }
    return map_combiFunc;
}

1 个答案:

答案 0 :(得分:0)

我使用set来获取每个条目中的第三个值并重置combiFunc ArrayList。

public TreeMap<String, List<String>> findCombiFunctions() {

        ArrayList<String> combiFunc = new ArrayList<String>();
        Set<String> tempThird = new HashSet<String>();
        ArrayList<String> tempThirdArray = new ArrayList<String>();
        for (Entry<String, List<String>> entryAufAuf : map_AufAufVerbindung
                .entrySet()) {
            tempThird.add(entryAufAuf.getValue().get(3));

        }
        tempThirdArray.addAll(tempThird);
        System.out.println(tempThirdArray);
        for (int i = 0; i < tempThird.size(); i++) {
            for (Entry<String, List<String>> entryAufAuf : map_AufAufVerbindung
                    .entrySet()) {

                if (entryAufAuf.getValue().get(3).equals(tempThirdArray.get(i))) {
                    System.out.println(entryAufAuf.getValue().get(2) + " "
                            + tempThirdArray.get(i));
                    combiFunc.add(entryAufAuf.getValue().get(2));
                    map_combiFunc.put(tempThirdArray.get(i), combiFunc);
                }
            }
            combiFunc = new ArrayList<String>();            
        }
        return map_combiFunc;
    }