对map和list的重新理解

本文详细介绍了从数据库中查询出的多条记录如何以列表形式存储,并通过迭代器进行遍历,将每条记录转换为map进行键值对存储,方便后续根据键获取对应的值。同时,讨论了不同类型的列表存储结构及其遍历方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

List:
1
冲数据库查出的多条记录的保存形式为:
list= [
{STATEDESC=null, STATE=2, ZONE_CODE=2, UUID=5, NODE_CODE=0 , COLLECTTIME=2011-02-16 00:00:00.0},
{STATEDESC=null, STATE=1, ZONE_CODE=2, UUID=2, NODE_CODE=3 , COLLECTTIME=2011-02-16 00:00:00.0}
];

list.get(0) = {STATEDESC=null, STATE=1, ZONE_CODE=1, UUID=4, NODE_CODE=0 , COLLECTTIME=2011-02-16 00:00:00.0}
list.get(1) = {STATEDESC=null, STATE=1, ZONE_CODE=1, UUID=1, NODE_CODE=3 , COLLECTTIME=2011-02-16 00:00:00.0}

每个都为一条记录,如果想取取某个值的话就没办法(比如第一条记录的字段ZONE_CODE的值为1),这时候就该考虑把list里的值放到map里面
HashMap hm = new HashMap(); //创建一个map
Iterator iterator = list.iterator();// list得到迭代器
while (iterator.hasNext()) { //通过迭代器遍历

Map row = (Map) iterator.next();//分别把第一条和第二条记录放到map里面,就成了键值对的形式了,就可以按照如下的方式取值了

}
这个时候就可以通过row.get("ZONE_CODE");就可以取到值了。

2
list的值也可是这种形式:如:list= [vo1,vo2]
list = [
cn.gov.cma.cimiss.gds.dataservices.monitorsystem.vo.MonitorGMDVO@3d0426,
cn.gov.cma.cimiss.gds.dataservices.monitorsystem.vo.MonitorGMDVO@1db8f3a
]
list1.get(2) = cn.gov.cma.cimiss.gds.dataservices.monitorsystem.vo.MonitorGMDVO@1db8f3a

(TempDataRegionVO)list1.get(2) = cn.gov.cma.cimiss.gds.dataservices.monitorsystem.vo.MonitorGMDVO@1db8f3a

3
map
maprow= {STATEDESC=null, STATE=1, ZONE_CODE=3, UUID=6, NODE_CODE=0 , COLLECTTIME=2011-02-16 00:00:00.0}//对应1里面的list的值

hm.put(node_code, vo);
hm= {0 =cn.gov.cma.cimiss.gds.dataservices.monitorsystem.vo.FullMeshNodeStateMonitorVO@1de41c3}

hm= {0 =cn.gov.cma.cimiss.gds.dataservices.monitorsystem.vo.FullMeshNodeStateMonitorVO@1de41c3,
3 =cn.gov.cma.cimiss.gds.dataservices.monitorsystem.vo.FullMeshNodeStateMonitorVO@af9d74}

hm= {0 =cn.gov.cma.cimiss.gds.dataservices.monitorsystem.vo.FullMeshNodeStateMonitorVO@18a5d49}
4
map遍历
for(int i=0;i<hm1.keySet().toArray().length;i++){
String key = (String)hm1.keySet().toArray()[i];
FullMeshNodeStateMonitorVO vo = (FullMeshNodeStateMonitorVO)hm1.get(key);
System.out.println("status is ==="+vo.getStatedesc());
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值