迭代列表<map <string,object =“”>&gt;并使用Java将对象的值添加到列表中

时间:2017-10-23 10:00:55

标签: java

我有一个List&gt;如

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

我正在将对象重复为

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);
            }
        }

打印为

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

如何在列表中添加TXNO值?我的List对象最终应该是[428,434,442]

3 个答案:

答案 0 :(得分:3)

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);
                }
            }
        }

如果您需要整数列表,只需将TXNOList定义更改为Integer并将值转换为Integer:Integer.valueOf(value)

答案 1 :(得分:1)

如果你可以使用java 8,那么这是一个优雅的解决方案:

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

答案 2 :(得分:1)

你可以这样做: -

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);
        }
    }