Как перебрать Список > и добавьте ключ и значение динамически в другую карту ha sh в java - PullRequest
1 голос
/ 21 марта 2020

Я пытаюсь выполнить итерацию List<Map<String, Object>> и хочу проверить, является ли код"утвержденным" или нет - если код имеет значение "утвержден" тогда я хотел бы добавить "id" как Key и "date" как Value в другой hashMap.

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

Этот prodIds возвращает следующий набор записей:

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

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

Я хочу получить что-то вроде этого: Если код "утвержден" - мой новый га sh карта должна иметь значение, как показано ниже:

map.put("49295837", "2003-04-01")
map.put("58761474621", "2017-09-30")

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]}]
// [{id=[58761474621], code=[approved], Date=[2017-09-30]}, {id=[3368781], code=[Cancelled], Date=[2014-01-01]}, {id=[48843224], code=[Cancelled], Date=[2009-01-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);
        }
    }

У меня возникают трудности с установкой ключа (идентификатор ) и значение (Дата) динамически, если кодовое значение «утверждено» в новой карте ha sh. Было бы очень полезно, если бы кто-то мог помочь мне с этим.

Заранее признателен за вашу помощь!

Спасибо

1 Ответ

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

Насколько я могу судить по вашему примеру, это должно сработать. Но для каждого Map<String,Object> мне нужно знать, что такое Object (например, String, List<>, et c).

Я предполагаю, что это списки. Если я ошибаюсь, вы получите ClassCastException

    public static Map<String, String>
            getApproved(List<Map<String, Object>> prodIds) {
        Map<String, String> newMap = new HashMap<>();
        for (Map<String, Object> map : prodIds) {
            if (map.containsKey("code") &&
            ((List<String>) map.get("code")).get(0)
                    .equals("approved")) {
                newMap.put(((List<String>) map.get("id")).get(0),
                        (String) ((List<String>) map.get("Date"))
                                .get(0));
            }
        }
        return newMap;
    }

    Map<String, String> newMap = getApproved(prodIds);
    newMap.entrySet().forEach(System.out::println); 

Отпечатки

58761474621=2017-09-30
49295837=2003-04-01

Было бы полезно, если бы вы могли описать все свои структуры данных. Например, какой тип карты Object?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...