Как получить данные из вложенной хэш-карты в хорошем виде? - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть вложенная хэш-карта как

 HashMap<Integer, HashMap<String,Integer>> productAdded = new HashMap<>();

Я добавил ценность как

    int price=12;
    String name="Apple";
    productAdded.put(1, new HashMap(){{ put(name, price); }});

и я пытаюсь получить его как

for(int i=1;i<=ProductList.productAdded.size();i++) 
{
    System.out.println(ProductList.productAdded.get(i).keySet()+"\t :$"+ProductList.productAdded.get(i).values());
}

Фактическая выработка

[Большая пицца]: $ [12]

Ожидаемый результат.

Большая пицца: $ 12

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Хотя это и не рекомендуется, вы можете сделать что-то вроде этого:

ProductList.productAdded.get(i).keySet().toString().replace("[","").replace("]","");

То же самое для значений бит.

или вы можете сделать что-то вроде этого:

String brackets = "[\\[\\]]";
ProductList.productAdded.get(i).keySet().toString().replaceAll(brackets,"");
0 голосов
/ 17 сентября 2018

Используйте для каждого цикла для итерации

for(Integer i :productAdded.keySet()) {
           for(String s: productAdded.get(i).keySet()) {
               System.out.println(s+"\t :$"+ProductList.productAdded.get(i).get(s));
           }
       }

Вы также можете сделать это, используя java 8 streams foreach

ProductList.productAdded.keySet().stream().forEach(item->{
             ProductList.productAdded.get(item).keySet().stream().forEach(inneritem->{
                 System.out.println(inneritem+"\t :$"+ProductList.productAdded.get(item).get(inneritem));
             });
     });
0 голосов
/ 17 сентября 2018

И keySet(), и values() возвращают коллекции, следовательно, дополнительные скобки.Для вашего конкретного случая измените рефакторинг на keySet().iterator().next() и values().iterator().next, чтобы получить желаемый выходной формат.

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