Я пытаюсь создать список динамически
Я пытался создать список динамически, но он не позволяет создать динамический список.
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"
]
}
Какой точно вы подразумеваете под Это не позволяет? В чем проблема, сообщение об ошибке или нежелательный результат?
Можете ли вы объяснить эту часть вашего вопроса «не позволяет создать динамический список»? Кроме того, каков результат, который вы сейчас получаете?
@deHaar Говорит, что левая часть присваивания должна быть переменной
это: ArrayList<String> entry.getKey() = new ArrayList(); недействительно
@AbuBakarKhan У меня есть masterList, который содержит несколько json-файлов.
@jhamon да, это недопустимый синтаксис, знаешь ли ты его?
У нас есть несколько JSON, и мы повторяем это с помощью masterList.get(i) в цикле for
@StephenC да, конечно, сделаю это, но не могли бы вы предоставить решение сейчас
Вы действительно должны взглянуть на то, как работают карты, особенно на ключ и концепцию стоимость (да, акцент — это большой намек на решение вашей проблемы)
Посмотрите внимательно на строчку ArrayList<String> entry.getKey() = new ArrayList();. Вы видите там какую-нибудь переменную (слева)? Я не...
@ShantulKuwar Вы можете использовать библиотеки GSON или Jackson, чтобы легко анализировать этот JSON. Если это так, то.
Mate, я повторяю JSON, и я знаю, что синтаксис List<String> list = new ArrayList(); но не могли бы вы все взглянуть на ввод и ожидаемый результат, пожалуйста
Мне кажется, вы верите, что можете преобразовать Map<String, Object> в Map<String, List> таким образом, но будет намного проще, если вы создадите новую карту, а затем преобразуете каждый объект объекта в объект списка и добавите объект списка в свою новую карту вместе с ключ
нам нужно создать массив с именем ключа, и мы получаем ключ в entry.getKey()
Может быть, моя Java не так хороша, но я знаю синтаксис
прошу всех еще раз взглянуть на вопрос
Нет, вы не знаете разницы между ключом и значением на карте.
Объект списка не имеет имен, вы просто повторно используете тот же ключ при добавлении списка на новую карту.
@JoakimDanielson пробует то же самое, что вы предложили




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);
}
Не следует менять тип карты, поэтому необходимо создать новую карту.
вы пытаетесь разобрать JSON?