2017-01-11 3 views
2

Моей карта выглядит следующим образом:Как выполнить итерацию по LinkedHashMap LinkedHashMaps?

LinkedHashMap <LinkedHashMap <String,String>,LinkedHashMap <String,String>> leftRightWords 

Если первая карта содержит левые слова имени собственного и вторая карта содержит правильные слова имени собственного. Например. в:

"После поставщика решений Rhode Island решение Atrion к продать"

map1 будет иметь записи вроде:

Rhode Island, Following the 
Atrion, solution provider 

map2 будет иметь записи, как:

Rhode Island, solution provider 
Atrion, decision to sell 

На обеих картах ключи одинаковы, но t он имеет значение, основанное на левом и правом словах. Как выполнить итерацию по этой карте, чтобы извлечь левые слова и правильные слова для их анализа?

+5

Я прочитал это, кажется, что вам нужно лучшая структура данных для него. Например. multiMap или что-то в этом роде, поскольку вы сказали, что ключ в обеих внутренних картах всегда один и тот же. Однако я не могу предложить, потому что я не знаю точного требования. – Kent

+0

Являются ли '' '' '' '' '' '' '' '' '' '' '' '' гарантированно того же 'размера'? – CraigR8806

+6

Это кажется странным выбором типов, почему бы не иметь класс 'Words', который имеет как левый, так и правый, и имеет« Map ». Или, возможно, также храните само существительное и просто введите «Список ». –

ответ

0

Вы можете использовать вложенную forEach цикл для извлечения данных вы хотите, например, так:

for(LinkedHapMap<String, String> lhm: leftRightWords.keySet()){ 
    for(String k:lhm.keySet()){ 
     String left = lhm.get(k); 
     String right = leftRightWords.get(lhm).get(k); 
     //do something with these Strings 
    } 
} 
0

Вы можете сделать это следующим образом:

Iterator<LinkedHashMap<String, String>> resultKeys = leftRightWords 
        .keySet().iterator(); 
      while (resultKeys.hasNext()) { 
       LinkedHashMap<String, String> tempKey = resultKeys.next(); 
       LinkedHashMap<String, String> tempVal = leftRightWords.get(tempKey); 
       System.out.println("Key:"); 
       for (Map.Entry<String, String> entry : tempKey.entrySet()) { 
        System.out.println(entry.getKey() + " " 
          + entry.getValue()); 
       } 
       System.out.println(); 
       System.out.println("Value:"); 
       for (Map.Entry<String, String> entry : tempVal.entrySet()) { 
        System.out.println(entry.getKey() + " " 
          + entry.getValue()); 
        System.out.println(); 
       } 
      }