简体   繁体   English

Java 在地图上打印值对象<String, Object>

[英]Java Print Value Object on Map<String, Object>

I set list on another class我在另一个班级设置了列表

List<DataModel> dataList = new ArrayList<DataModel>();

parsed on class在课堂上解析

for(DataModel list : dataList) {
    final String[] data = {list.getVar_a(), list.getVar_b()};
    System.out.println("out data");
    System.out.println(list.getVar_a());
    System.out.println(list.getVar_b());
}

this prints data这打印数据

out data
val_a
val_b

Model Class模型类

class DataModel {
    private String var_a, var_b;

    //Getter & Setter
}

But now, I use and set map on another class and I'm not implementing a model class because in real case it has too many variables.但是现在,我在另一个类上使用并设置了 map 并且我没有实现模型类,因为在实际情况下它有太多变量。

Map<String, Object> mapData = new LinkedHashMap<String, Object>();

when I set data on map, its result from database当我在地图上设置数据时,它的结果来自数据库

Map<String, Object> map = new LinkedHashMap<String, Object>();
msg = (String) cs.getObject(5);
rs = (ResultSet) cs.getObject(4);

ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
if(rs.next()){
    int jml = 0;
    do {
        Map<String, Object> data = new LinkedHashMap<>();
        for (int i = 1; i <= count; i++ ) {
            String name = rsmd.getColumnName(i);
            data.put(name, rs.getObject(name));
            
        }
        map.put(""+jml, data);
        jml++;
    } while(rs.next());
    
    setStatus(SUCCESS);
    setMessage(msg);
} else {
    LOG.info(NO_DATA_FOUND);
}

parsed on class在课堂上解析

for(Map.Entry<String,Object> list : mapData.entrySet()) {
    String key = list.getKey();
    Object val = list.getValue();
    System.out.println("out data");
    System.out.println(key);
    System.out.println(val);
}

this prints data这打印数据

out data
0
{var_a=val_a, var_b=val_b}

I want to get value on object like this我想在这样的对象上获得价值

out data
val_a
val_b

Change your Map for loop to:将您的 Map for 循环更改为:

for(Map.Entry<String,Object> list : mapData.entrySet()) {
        DataModel value = (DataModel) list.getValue();
        System.out.println("out data");
        System.out.println(value.getVar_a());
        System.out.println(value.getVar_b());
    }

First you have a map of object, and what you really need is a Map of Map.首先你有一个对象地图,你真正需要的是一个地图地图。

Here is your reading a map of object.这是您阅读的对象地图。

for(Map.Entry<String,Object> list : mapData.entrySet()) {
    String key = list.getKey();
    Object val = list.getValue();
    System.out.println("out data");
    System.out.println(key);
    System.out.println(val);
}

What you really need is a map of map as I am showing below.您真正需要的是我在下面显示的地图。

Map<String, Map<String, Object>> map = new LinkedHashMap<String, Map<String, Object>>()

Now if you read it as map of map, You can have the result that you need.现在,如果您将其阅读为地图地图,则可以获得所需的结果。

0 : {a1:v1, a2:v2, etc...}, 1 : {a2:v2, a2:v2, etc...}, 2 : {a3:v3, a3:v3, etc...} 0 : {a1:v1, a2:v2, etc...}, 1 : {a2:v2, a2:v2, etc...}, 2 : {a3:v3, a3:v3, etc...}

for(Map.Entry<String,Map<String, Object> list : mapData.entrySet()) {
    String key = list.getKey();
    System.out.println("out data");
    for(Map.Entry<String,Object> innermap : list.getValue().entrySet()) {
        //System.out.println(innermap.getKey());
        System.out.println(innermap.getValue());
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM