цикл через мульти карту

У меня есть мультикарта 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;
}

person Iman    schedule 15.01.2015    source источник
comment
Кажется, на карте не хватает запятой в конце первой строки...   -  person CiaPan    schedule 15.01.2015
comment
да ты прав. Он был упущен при копировании.   -  person Iman    schedule 15.01.2015


Ответы (1)


Я использовал набор, чтобы получить третье значение в каждой записи и сбросить 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;
    }
person Iman    schedule 15.01.2015