2015-01-15 2 views
1

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

На карте, кажется, нет запятой в конце первой строки ... – CiaPan

+0

Да, вы правы. Он был пропущен во время копирования. – Iman

ответ

0

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