Изменить значение во внутренней карте с помощью потокаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Изменить значение во внутренней карте с помощью потока

Сообщение Anonymous »

У меня есть такая карта Map . Как вы можете видеть, есть внутренняя карта «токен», а внутри этой карты есть внутренняя карта «tokeninfo»:

Код: Выделить всё

{
"id": "44f79d20f28a2ea505b1",
"type": "ONE",
"cardIssued": "AA",
"token": {
"token1": "dummy",
"tokenInfo": {
"aaa": "007"
},
"payment": {
"name": "test",
"paymentType": {
"card": "ONE"
},
"paymentAcc": "123"
},
"isDelegated": false,
"attemptId": "981631"
}
Кроме того, у меня есть такой метод:

Код: Выделить всё

private static HashMap getReplace(Map message) {
HashMap message = new HashMap(message);

for (String mapKey : PARAMETERS_FOR_REPLACE) {
message.computeIfPresent(mapKey,
(key, value) -> REGEX_ANY_CHAR.matcher(String.valueOf(value)).replaceAll("$^%%$"));
}
return message;
}
Мне нужно заменить значения некоторых ключей на карте и на внутренней карте. например:
cardIssued (из карты)
token1 (из внутренней карты токена)
aaa из внутренней карты токена -> tokeninfo
значение может быть любым внутренняя карта, а не только токен и информация о токене
Есть ли способ передать все значения в потоковом режиме, чтобы проверить, является ли это картой, а затем вызвать метод и заменить его?
Окончательный результат должен быть:

Код: Выделить всё

    {
"id": "44f79d20f28a2ea505b1",
"type": "ONE",
"cardIssued": "$^%%$",
"token": {
"token1": "$^%%$",
"tokenInfo": {
"aaa": "$^%%$"
},
"payment": {
"name": "test",
"paymentType": {
"card": "ONE"
},
"paymentAcc": "123"
},
"isDelegated": false,
"attemptId": "981631"
}
если я это запущу:

Код: Выделить всё

  Map newMessage = getReplace(messageMap.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, entry -> (Object) entry.getValue())));
Значение изменится только на «верхней» карте.
Есть ли способ использовать поток и сделать это на всех внутренних и внутренних «внутренних» картах?

Подробнее здесь: https://stackoverflow.com/questions/786 ... ith-stream
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»