2010-11-07 4 views
5

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

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

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

вот моя программа тренировки:

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

+2

Подумайте о том, что другое возможное решение для вашей цели состоит в том, чтобы иметь один хэш-файл, который имеет как пары ключей значений. Это уменьшит сложность всего этого (также потому, что с фактическим синтаксисом генериков довольно боль). – Jack

+0

да, это приятно! Спасибо! Моя потребность исходит из проекта, который мне нужно сначала отсортировать список карт, а затем получить значения каждой отдельной карты для дальнейшего использования. – john

ответ

7

Вот обновленный код, который, кажется, работает, вам нужно набрать карту карт как <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)); 
     }    
    } 
} 
+0

Благодарим вас за доработку моего кода !!! – john

5

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

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

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

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

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

+0

путем переопределения карты, должен ли я получить карту по карте m = mpMaps.get (key)? Я попытался, но все равно не могу заставить его работать ..... – john

+0

Да, вам нужно. Если это не сработает, отредактируйте свой вопрос, чтобы добавить новый код и точно объяснить, что не работает. – sleske

+0

Отлично! Я заработал! Теперь, действительно понимаю, насколько серьезной является Java!Несколько раз я получал код, работающий в Groovy, но когда его пытались на Java, он не удался. Это не удалось, потому что я не дал достаточно подробностей типов! СПАСИБО! – john

0

Карта mpMaps = new HashMap();

mpMaps.put ("Map1", mp);

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

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

-3

Example

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

+0

Это было бы более полезно, если бы это был текст, а не изображение текста ... – WillardSolutions

Смежные вопросы