Карта карт - как сохранить внутренние карты как карты? - PullRequest
5 голосов
/ 08 ноября 2010

Моя цель - создать карту карт, чтобы я мог получить информацию о внешней карте по ее ключу, а затем получить доступ к ее "внутренним" картам по их ключам.

Однако, когда я получил каждую внутреннюю карту, карта, которую я создал, изначально стала Объектом, и я не могу использовать ключ для доступа к его значению, как для внешней карты.

Чтобы узнать у васэксперты, я хотел бы знать, как сохранить все карты в виде карт.Или это вообще возможно?

вот моя программа упражнений:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class MapExample {

    public static void main(String[] args) {

        Map<Object,String> mp=new HashMap<Object, String>();

        // adding or set elements in Map by put method key and value pair
        mp.put(new Integer(2), "Two");
        mp.put(new Integer(1), "One");
        mp.put(new Integer(3), "Three");
        mp.put(new Integer(4), "Four");

        Map<Object,String> mp2=new HashMap<Object, String>();
        mp2.put(new Integer(2), "Two2");
        mp2.put(new Integer(1), "One2");
        mp2.put(new Integer(3), "Three2");
        mp2.put(new Integer(4), "Four2");

        Map<Object,String> mpMaps=new HashMap();

        mpMaps.put("Map1",mp);
        mpMaps.put("Map2",mp2);

        System.out.println("This is a map of Maps:   " + mpMaps); 

        for (int i=0;i<mpMaps.size();i++){
                     ArrayList a = new ArrayList(mpMaps.keySet());
                     Object o=a.get(i);
                     System.out.println("all together: " + mpMaps.size() + "each element is:  " + o + " value: " + mpMaps.get(o));
        }             
    }
}

РЕШЕНИЯ:

   Map<Object,Map<Object,String>
    Map<String, Object> mpMaps=new HashMap<String, Object>(); 

от ameer и sleske

Ответы [ 6 ]

8 голосов
/ 08 ноября 2010

Вот обновленный код, который, кажется, работает, вам нужно напечатать карту карт как <String, Object>, так как mp не является строкой, которую вы не можете сделать <Object, String>.

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.ArrayList;

public class MapExample {

    public static void main(String[] args) {

        Map<Object,String> mp=new HashMap<Object, String>();

        // adding or set elements in Map by put method key and value pair
        mp.put(new Integer(2), "Two");
        mp.put(new Integer(1), "One");
        mp.put(new Integer(3), "Three");
        mp.put(new Integer(4), "Four");

        Map<Object,String> mp2=new HashMap<Object, String>();
        mp2.put(new Integer(2), "Two2");
        mp2.put(new Integer(1), "One2");
        mp2.put(new Integer(3), "Three2");
        mp2.put(new Integer(4), "Four2");

        Map<String, Object> mpMaps=new HashMap<String, Object>();

        mpMaps.put("Map1",mp);
        mpMaps.put("Map2",mp2);

        System.out.println("This is a map of Maps:   " + mpMaps); 

        for (int i=0;i<mpMaps.size();i++){
                     ArrayList<Object> a = new ArrayList<Object>(mpMaps.keySet());
                     Object o=a.get(i);
                     System.out.println("all together: " + mpMaps.size() + "each element is:  " + o + " value: " + mpMaps.get(o));
        }             
    }
}
5 голосов
/ 08 ноября 2010

Ваш код не компилируется.

Одна проблема заключается в следующем:

Map<Object,String> mpMaps=new HashMap();
mpMaps.put("Map1",mp);

Это не сработает, поскольку вы помещаете карту (mp) в карту, значения которойдолжно быть Strings.

Используйте Map<Object,Map<Object,String>, и все будет в порядке.

3 голосов
/ 04 августа 2011

Альтернативным решением будет использование Commons MultiKey для избежания отображения карт. Подробности см. На http://commons.apache.org/collections/apidocs/ и org.apache.commons.collections.keyvalue.MultiKey

0 голосов
/ 05 июля 2019

Вот простой пример использования HashMap

    HashMap<String, HashMap<String, Object>> outerMap = new HashMap<String, HashMap<String, Object>>();

    HashMap<String, Object> innerMap1 = new HashMap<String, Object>();
    HashMap<String, Object> innerMap2 = new HashMap<String, Object>();


    innerMap1.put("Name", "az");
    innerMap1.put("Address", "7 lab");
    innerMap1.put("Age", 40);

    innerMap2.put("Name", "sab");
    innerMap2.put("Address", "bk3");
    innerMap2.put("Age", 35);

    outerMap.put("1",innerMap1);
    outerMap.put("2", innerMap2);
    System.out.println("outerMap = " + outerMap);

Выход:

outerMap = {1={Address=7 lab, Age=40, Name=az}, 2={Address=bk3, Age=35, Name=sab}}
0 голосов
/ 03 декабря 2016

Example

Это пример создания карты карт.

0 голосов
/ 08 ноября 2010
Map<Object,String> mpMaps=new HashMap();

mpMaps.put("Map1",mp);

вы получите исключение с этим утверждением: mp имеет тип Map, но вы рассматриваете его как String.

Если я правильно понял ваш вопрос, вам либо понадобится ссылка на объект, используемый в качестве ключа, либо вам нужно будет ввести приведенный ключ / значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...