Java Значения многомерной карты? - PullRequest
0 голосов
/ 08 мая 2020

Когда я использую tag.getValue() ниже, я получаю это значение: {permission=test,rank=test,forsale=true}. Как я могу извлечь эти значения из этой карты?

List<Map<?, ?>> tagsList = instance.getConfigFile().getMapList("chattags.ranks");

for (Map<?, ?> tagMap : tagsList) {
    for (Map.Entry<?, ?> tag : tagMap.entrySet()) {
        inv.addItem(gui.invItem(Material.NAME_TAG,
                false,
                Methods.color("&e&n" + tag.toString()),
                Methods.color("&e&n" + tag.getValue()),
                Methods.color("&7 - Shows up as: " + tag.getValue())));
    }
}

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Изменить: обновлено для более точного отслеживания вашего кода и теперь есть вложенная карта.

Пример ниже может помочь вам ясно увидеть, как go использовать эту структуру данных.

Map<String, Map<?, ?>> tagMapOne = new HashMap<>();

Map<String, String> tagMapTwo = new HashMap<>();
tagMapTwo.put("permission", "test");
tagMapTwo.put("rank", "test");
tagMapTwo.put("forsale", "true");

tagMapOne.put("TagMapTwo", tagMapTwo);

List<Map<?, ?>> tagList = new ArrayList<>();

tagList.add(tagMapOne);

for (Map<?, ?> map : tagList) {
    for (Map.Entry<?, ?> entry : map.entrySet()) {
        System.out.println("key=" + entry.getKey() + "|value=" + entry.getValue());
        System.out.println("permission=" + ((Map<?, ?>) entry.getValue()).get("permission"));
        System.out.println("rank=" + ((Map<?, ?>) entry.getValue()).get("rank"));
        System.out.println("forsale=" + ((Map<?, ?>) entry.getValue()).get("forsale"));
    }
}
0 голосов
/ 08 мая 2020

Тег - это Map для извлечения значений из карты, вам нужно использовать ключи или запись, установленную, как вы используете в l oop. Поскольку карта выглядит так, будто в ней используются подстановочные знаки, вам нужно будет выяснить тип ключа и значений.

например,

     List<Map<?, ?>> tagsList = instance.getConfigFile().getMapList("chattags.ranks");

        for (Map<?, ?> tagMap : tagsList) {
            for (Map.Entry<?, ?> tag : tagMap.entrySet()) {
                Object permission = tag.get("permission");
                Object rank = tag.get("rank");
                Object forsale = tag.get("forsale");
                // use values
                inv.addItem(gui.invItem(Material.NAME_TAG,
                                        false,
                                        Methods.color("&e&n" + tagRank.toString()),
                                        Methods.color("&e&n" + tag.getValue()),
                                        Methods.color("&7 - Shows up as: " + tag.getValue())));
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...