2 qq 27836205 qq_27836205 于 2017.09.13 14:59 提问

JAVA 有一个list里存放的是map 如何获取map里某几个key和value效率最高

list里面有十万条, 每条里存放的是map,key分别是name,age,hobby。。。等等 ,如何获取每个list里面的map的name,age,hobby和对应value效率最高

9个回答

qq_23292875
qq_23292875   2017.09.13 15:18
已采纳

十万条数据的话用entryset吧.

cashT
cashT   2017.09.13 15:10

List> list = new ArrayList>();
for (Map s:list) {
System.out.println(s.entrySet());
}

cashT
cashT 回复Jordan裔: 不太明白你的意思,你是有目的性的去获取的话那不是已经拿到key了吗?
2 个月之前 回复
qq_27836205
qq_27836205 我要获取某几个key和value 不是全部
2 个月之前 回复
xiaoyl2015
xiaoyl2015   2017.09.13 15:37

首先,这个问题的解决办法:利用循环(这种是效率比较高的,还有三种是针对map遍历的,都差不多)
List list;
Map map;
for(i=0;i<list.size;i++){
map=list.get(i);
for (String key : map.keySet()){
System.out.println("key:"+key+",value:"+map.get(key) );
}
}

其次十万条记录为什么还放在list里面并且list里还放map,这本身就是个错误的思路,应该用数据库或者redis,特别好解决性能问题。

cashT
cashT   2017.09.13 15:11
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
                for (Map<String, Object> s:list) {
                    System.out.println(s.entrySet());
            }
cyjdapao
cyjdapao   2017.09.13 16:04

List> associationTBIdList = null;
for (Map associationTBIdMap : associationTBIdList) {
for (Entry entry : associationTBIdMap.entrySet()) {
entry.getKey(),
entry.getValue()
}
}
就这样 其实我就是想要点分 O(∩_∩)O哈哈~

qq_36594739
qq_36594739   2017.09.13 16:14
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
        for (Map<String, String> map : list) {
            for (Map.Entry<String, String> entry : map.entrySet()) {
                System.out.println(entry.getKey() + "   " + entry.getValue());
            }
        }

lppzyt
lppzyt   2017.09.13 23:39

数据应该是从数据库中得来吧,若确定需要哪些字段,就只查出来哪些字段就好了,这样就避免了

shui878412
shui878412   2017.09.14 15:47

10万条数据全部加载到内存中还是有点危险,容易导致内存溢出。一个地方用获取不会,多有几个这样的程序估计就够呛了。所以建议还是不要在这条思路上走太远,可以换个思路看是否可以解决问题。

zhuoyue93
zhuoyue93   2017.09.14 17:21

for循环list,直接用key取Map

Csdn user default icon
上传中...
上传图片
插入图片