Estoy teniendo una lista> como

[{TXNO=428, STATUS=NEW}, {TXNO=434, STATUS=NEW}, {TXNO=442, STATUS=NEW}]

Estoy iterando el objeto como

for (Map<String, Object> map : details) {
            for (Map.Entry<String, Object> entry : map.entrySet()) {
                String key = entry.getKey();
                Object value = entry.getValue();
                logger.info(key+"="+value);
            }
        }

Se imprime como

TXNO=428
STATUS=NEW
TXNO=434
STATUS=NEW
TXNO=442
STATUS=NEW

¿Cómo puedo agregar valores TXNO en una lista? Mi lista de objetos finalmente debería ser [428,434, 442]

1
Yakhoob 23 oct. 2017 a las 13:00

3 respuestas

La mejor respuesta
List<String> TXNOList = new LinkedList<String>();

for (Map<String, Object> map : details) {
            for (Map.Entry<String, Object> entry : map.entrySet()) {
                String key = entry.getKey();
                Object value = entry.getValue();
                logger.info(key+"="+value);
                if(key.equals("TXNO")) {
                    TXNO.add(value);
                }
            }
        }

Si necesita una lista Integer, simplemente cambie la definición de TXNOList a Integer y el valor de conversión a Integer: Integer.valueOf(value).

3
baumfreund 23 oct. 2017 a las 10:10

Si puede usar Java 8, entonces aquí hay una solución elegante:

List<Object> txno = mapList.stream()
            .map(map -> map.get("TXNO")) // get value by key
            .filter(Objects::nonNull) // check if not null
            .collect(Collectors.toList()); // collect to list
1
Schidu Luca 23 oct. 2017 a las 10:12

Puedes hacerlo de esta manera: -

List<Object> TXList=new ArrayList<Object>();
    for (Map<String, Object> map : details) {
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            String key = entry.getKey();
            Object value = entry.getValue();
            if(key.equals("TXNO"))
            TXList.add(value);
        }
    }
1
gajju_15 23 oct. 2017 a las 10:20