日期:2014-05-20  浏览次数:21051 次

list中map对象的取值
有一个list的对象里面存放的都是map的对象
list   a{
map(name=   11,tag=1)
map(name=   23,tag=1)
map(name=   12,tag=0)
map(name=   13,tag=1)
map(name=   24,tag=0)
map(name=   71,tag=1)
map(name=   16,tag=0)
}

现在想取a中的name为12的tag值应该怎么操作?
name的值是唯一的。

------解决方案--------------------
楼主是用list存放map,但是每个map只存放一个pair?
这样的话何不直接用一个map?
------解决方案--------------------
循环取一遍
------解决方案--------------------
Map map;
for (int i = 0; i < list.size(); i++) {
map = list.get(i);
if (map.get( "name ").equals( "12 "))
return map.get( "tag ");
}
------解决方案--------------------
for(Iterator it = list.iterator(); it.hasNext();) {
Map map = (Map) it.next();
if (map.containsKey( "12 ")) {
return map.get( "12 ");
}
}
------解决方案--------------------
list还有key?
------解决方案--------------------
public Object getMap(list l){
Map map = new HashMap();
for (int i = 0; i < l.size(); i++) {
map = l.get(i);
if (map.get( "name ").equals( "12 "))
return map.get( "12 ");
}
}
------解决方案--------------------
无法保证不会重复,如果能保证,那么这个结构设计有问题。

总之:肯定有地方想法不对路了
------解决方案--------------------
循环取了对比name,
不知道这有什么难的...
------解决方案--------------------
新手 不知道key值可不可以重复 不可以的话直接找value就行了吧
------解决方案--------------------
感觉就如读绕口令
------解决方案--------------------
很简单的问题被你们想得乱七八糟
------解决方案--------------------
for(Iterator it = list.iterator(); it.hasNext();) {
Map map = (Map) it.next();
if (map.containsKey( "12 ")) {
return map.get( "12 ");
}
}
------------------------------------------

同意vagrant1984同志的看法

------解决方案--------------------
看起来这种问题只好通过迭代判断了
------解决方案--------------------
不会有这种用法
------解决方案--------------------
equal呗