Как получить значение из списка значений карты в java и обработать, когда его нет - PullRequest
1 голос
/ 20 марта 2020

Я хочу повторить список карты и проверить, является ли код " утвержден ", затем добавить " id " и " date " в другой карта . И у меня есть сценарий, когда-нибудь код не станет частью моего списка карт (например, Запись 1 - у меня есть код только для второго элемента, у меня есть только id и date в моем первом элементе, где Record -2 будет иметь " code " во всех элементах)

Это мой код

List<Map<String, Object>> prodIds = ((List<Map<String, Object>>) myIds.get("result"));

// Этот prodIds возвращается ниже в моем java коде:

Запись 1:

[{id=[14766724], Date=[1999-01-01]}, {id=[49295837], code=[approved], Date=[2003-04-01]}]

Запись 2:

[{id=[58761474621], code=[approved], Date=[2017-09-30]}, {id=[3368781], code=[Cancelled], Date=[2014-01-01]}, {id=[48843224], code=[Cancelled], Date=[2009-01-01]}]

Java Код

List<Map<String, Object>> prodIds = ((List<Map<String, Object>>) myIds.get("result"));
System.out.println("prodIds : " +prodIds ); //  [{id=[14766724], Date=[1999-01-01]}, {id=[49295837], code=[approved], Date=[2003-04-01]}]

Map<String, String> newMap = new HashMap<>();
    for (Map<String, Object> map : prodIds) { 
        for (Map.Entry<String, Object> entry : map.entrySet()) { 
            String key = entry.getKey();
            System.out.println("Key : " +key);

            String value = (String) entry.getValue();
             System.out.println(" Value : " +value);
        }
    }

Мне здесь трудно добавить ключ как " id " и значение как " Date " в моем newMap , и я хочу добавить " id " и " дата " для значения кода " утверждено "

Как это сделать?

Ответы [ 2 ]

1 голос
/ 20 марта 2020

Вам просто нужен пустой нулевой и пустой чек

for (Map<String, Object> s : prodIds) { 

   List<String> status = (List<String>) s.get("code");

      if(status!=null && !status.isEmpty()) {

         System.out.println("status value: " +status.get(0));
      }else {
        //some default value or do something 

       }

 }
0 голосов
/ 20 марта 2020

Это должно найти все утвержденные элементы и вывести дату (при условии, что ваши значения кода являются строкой):

prodIds.stream()
        .filter(m -> m.get("code") != null && m.get("code").equals("approved"))
        .map(m -> m.get("Date"))
        .forEach(System.out::println);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...