2014-11-12 3 views
-2

У меня есть два хэш-карты. Первый -заменить ключи в hashmap с ключами другого hashmap java

Map<String, ArrayList<String>> name = new HashMap<String, ArrayList<String>>(); 

, который содержит имя как ключ и город как значение. Второе -

Map<String, ArrayList<String>> games = new HashMap<String, ArrayList<String>>(); 

который содержит город как ключ и список игр, играемых за город как ценность.

Итак, я хочу сравнить города, и если города совпадают, то я хочу назначить список игр, которые играют как значение, которое следует назвать как ключ. То есть Мне нужна карта хеша, которая будет иметь имя в качестве ключа и списка игр, играемых в качестве значения.

Мне действительно нужна помощь здесь, поэтому, пожалуйста, дайте подробную информацию, поскольку я полный новичок для Java.

Заранее спасибо

+0

Как может быть город символом '' ArrayList ? – Seelenvirtuose

+0

Также, учитывая, что город является ArrayList в # 1, как он может соответствовать # 2, где это просто строка. – NameSpace

+0

@Seelenvirtuose, ..my плохой ... город - это строка .. извините за путаницу .. –

ответ

1

Я думаю, что первая карта должна содержать название, как ключ и город в качестве значения вместо списка города.

При таком предположении ниже код будет работать

Map<String, ArrayList<String>> nameGameListMap= new HashMap<String, ArrayList<String>>(); 
    Iterator<String> it = name.keySet().iterator(); 
    while(it.hasNext()) 
    { 
     String name = it.next(); 
     String city = name.get(name); 
     if(games.containsKey(city)) 
     { 
      nameGameListMap.put(name, games.get(city)); 
     } 
    } 
+0

.. Спасибо большое manoj .. это сработало отлично .. Спасибо за вашу помощь .. –

0

попробовать это

Map<String, List<String>> name = new HashMap<String, List<String>>(); 

List<String> name1CityList = new ArrayList<String>(); 
name1CityList.add("city1"); 
name1CityList.add("city2"); 

List<String> name2CityList = new ArrayList<String>(); 
name2CityList.add("city2"); 

List<String> name3CityList = new ArrayList<String>(); 
name3CityList.add("city3"); 
name3CityList.add("city4"); 

name.put("name1", name1CityList); 
name.put("name2", name2CityList); 
name.put("name3", name3CityList); 


Map<String, List<String>> games = new HashMap<String, List<String>>(); 

List<String> city1GameList = new ArrayList<String>(); 
city1GameList.add("game1"); 
city1GameList.add("game2"); 
city1GameList.add("game3"); 

List<String> city2GameList = new ArrayList<String>(); 
city2GameList.add("game1"); 
city2GameList.add("game2"); 

List<String> city3GameList = new ArrayList<String>(); 
city3GameList.add("game2"); 
city3GameList.add("game3"); 

games.put("city1", city1GameList); 
games.put("city2", city2GameList); 
games.put("city2", city3GameList); 

Map<String, List<String>> namegames = new HashMap<String, List<String>>(); 
List<String> tempList; 




for (Map.Entry<String, List<String>> entry : name.entrySet()) { 
    tempList = new ArrayList<String>(); 
    for (String str : entry.getValue()) { 
     for (Map.Entry<String, List<String>> entry_new : games.entrySet()) { 
      if (str.equals(entry_new.getKey())) { 
        for(String str_new : entry_new.getValue()){ 
         tempList.add(str_new); 
        } 
       } 
      } 
     } 
    if(!tempList.isEmpty()){ 
     namegames.put(entry.getKey(), tempList); 
    } 
    tempList = null; 
    } 

    for (Map.Entry<String, List<String>> entry : namegames.entrySet()) { 
     for(String str : entry.getValue()){ 
      System.out.println("Name : "+entry.getKey()+" Game :"+str); 
     } 
    } 
Смежные вопросы