Как создать динамический список<String>

Я пытаюсь создать список динамически

Я пытался создать список динамически, но он не позволяет создать динамический список.

int length = masterList.size();
for (int i = 0; i < length; i++) 
{
    for (Map.Entry < String, Object > entry: masterList.get(i).entrySet()) 
    {
        if (entry.getKey().startsWith("tag_"))
        {
            ArrayList<String> entry.getKey() = new ArrayList();
            tagDataList = Arrays.asList(entry.getValue().toString().split(","));
            for (String string : tagDataList) 
            {
                entry.getKey().add(string);
            }
        }
     }
}

Вход:

{
 "tag_fuse_type": "tag_1,tag_2"
}

Требуемый результат:

{
 "tag_fuse_type": [
  "tag_1",
  "tag_2"
 ]
}

вы пытаетесь разобрать JSON?

AbuBakar Khan 17.07.2019 10:44

Какой точно вы подразумеваете под Это не позволяет? В чем проблема, сообщение об ошибке или нежелательный результат?

deHaar 17.07.2019 10:44

Можете ли вы объяснить эту часть вашего вопроса «не позволяет создать динамический список»? Кроме того, каков результат, который вы сейчас получаете?

jhamon 17.07.2019 10:44

@deHaar Говорит, что левая часть присваивания должна быть переменной

Shantul Kuwar 17.07.2019 10:45

это: ArrayList<String> entry.getKey() = new ArrayList(); недействительно

jhamon 17.07.2019 10:45

@AbuBakarKhan У меня есть masterList, который содержит несколько json-файлов.

Shantul Kuwar 17.07.2019 10:46

@jhamon да, это недопустимый синтаксис, знаешь ли ты его?

Shantul Kuwar 17.07.2019 10:47

У нас есть несколько JSON, и мы повторяем это с помощью masterList.get(i) в цикле for

Shantul Kuwar 17.07.2019 10:50

@StephenC да, конечно, сделаю это, но не могли бы вы предоставить решение сейчас

Shantul Kuwar 17.07.2019 10:52

Вы действительно должны взглянуть на то, как работают карты, особенно на ключ и концепцию стоимость (да, акцент — это большой намек на решение вашей проблемы)

jhamon 17.07.2019 10:52

Посмотрите внимательно на строчку ArrayList<String> entry.getKey() = new ArrayList();. Вы видите там какую-нибудь переменную (слева)? Я не...

deHaar 17.07.2019 10:53

@ShantulKuwar Вы можете использовать библиотеки GSON или Jackson, чтобы легко анализировать этот JSON. Если это так, то.

AbuBakar Khan 17.07.2019 10:53

Mate, я повторяю JSON, и я знаю, что синтаксис List<String> list = new ArrayList(); но не могли бы вы все взглянуть на ввод и ожидаемый результат, пожалуйста

Shantul Kuwar 17.07.2019 10:57

Мне кажется, вы верите, что можете преобразовать Map<String, Object> в Map<String, List> таким образом, но будет намного проще, если вы создадите новую карту, а затем преобразуете каждый объект объекта в объект списка и добавите объект списка в свою новую карту вместе с ключ

Joakim Danielson 17.07.2019 10:58

нам нужно создать массив с именем ключа, и мы получаем ключ в entry.getKey()

Shantul Kuwar 17.07.2019 10:58

Может быть, моя Java не так хороша, но я знаю синтаксис

Shantul Kuwar 17.07.2019 10:59

прошу всех еще раз взглянуть на вопрос

Shantul Kuwar 17.07.2019 10:59

Нет, вы не знаете разницы между ключом и значением на карте.

jhamon 17.07.2019 10:59

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

Joakim Danielson 17.07.2019 10:59

@JoakimDanielson пробует то же самое, что вы предложили

Shantul Kuwar 17.07.2019 11:03
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
20
121
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

if (entry.getKey().startsWith("tag_")) {
    ArrayList < String > list = new ArrayList();
    tagDataList = Arrays.asList(entry.getValue().toString().split(","));
    for (String string: tagDataList) {
        list.add(string);
    }
    tagsMap.put(entry.getKey(), list);
}
Ответ принят как подходящий
Map<String, List<String>> newMap = new HashMap<>();
for (Map.Entry<String, String> entry : masterList.entrySet()) {
    List<String> values = new LinkedList<>();
    if (entry.getKey().startsWith("tag_")) {
        String[] words = entry.getValue().split(",\\s*");
        Collections.addAll(values, words);
     } else {
        values.add(entry.getValue());
     }
     newMap.put(entry.getKey(), values);
}

Не следует менять тип карты, поэтому необходимо создать новую карту.

Другие вопросы по теме