黑马程序员技术交流社区
标题:
Map&List
[打印本页]
作者:
oracleserver
时间:
2012-6-25 15:01
标题:
Map&List
List l= new ArrayList();
Map m=new HashMap();
map.put("a","1");
map.put("b","2");
map.put("c","3");
map.put("d","4");
l.add(m);
Map m2= new HashMap();
m2= l.get(0)
; //报错,Type mismatch: cannot convert from Object to Map
问题如上,我究竟如何才能把一个map写进去,然后取出来呢?
我试过 (Map)atxt.get(0);这样强转的,
List<Map> atxt = new ArrayList<Map>();也试过;
但是这样是编译不过的...
作者:
黄连兵
时间:
2012-6-25 16:05
本帖最后由 黄连兵 于 2012-6-25 16:07 编辑
List l= new ArrayList();
Map m=new HashMap();
m.put("a","1");
m.put("b","2");
m.put("c","3");
m.put("d","4");
l.add(m);
Map m2= new HashMap();
m2= (Map)l.get(0);
//在这里声明下要以Map的方式取出l中的第一个元素。否则默认的取出来就是个object。
楼主的代码中
map
和
m
是肿么回事?
楼主这个例子List和Map混用倒是蛮有意思哈~
其实应该用泛型定义,限定List l中的元素类型:List <Map>l= new ArrayList<Map>();后面就不用强制转换了。
作者:
张华廷
时间:
2012-6-25 16:14
List l= new ArrayList();
Map m=new HashMap();
map.put("a","1");
map.put("b","2");
map.put("c","3");
map.put("d","4");
l.add(m);
Map m2= new HashMap();
m2= l.get(0); //
改为m2 = (Map).l.get(0);声明Map的方式取出第一个元素,否则默认取出来的是一个Object。
作者:
周兴中
时间:
2012-6-25 16:16
本帖最后由 周兴中 于 2012-6-25 16:28 编辑
List l= new ArrayList();//建议使用ArrayList l= new ArrayList(); 否则也会出现类型不匹配:Type mismatch: cannot convert from ArrayList to List
Map m=new HashMap();//
楼主命名前后不一致,不知道你怎么put
map.put("a","1");
map.put("b","2");
map.put("c","3");
map.put("d","4");
l.add(m); // put的是map , add的却是 m ,我想你的原意应该是
add(map)
吧,楼主以后编程的时候还是要细心点,不然会很受伤.
Map m2= new HashMap();
m2= l.get(0)
; //报错,类型不匹配,需要强制转换 ,
m2= (Map) l.get(0);
可以这么改:
ArrayList l= new ArrayList();
Map map=new HashMap();
map.put("a","1");
map.put("b","2");
map.put("c","3");
map.put("d","4");
l.add(map);
//System.out.println(l);
Map m2= new HashMap();
m2= (Map) l.get(0);
//System.out.println(m2);
作者:
Forever。
时间:
2012-6-25 16:48
缺少强转……
作者:
sbeeqnui1987
时间:
2012-6-25 17:00
Map map=new HashMap();
Map的使用:
注意Map里的对象是键值对:{key,value} eg.{"username","godelegant"}
取出有多种方法,比较常用的有
1、在知道Key的情况下,直接map.get(key); eg. map.get("username");
2、在不知道key的情况下,使用iterator(迭代器)来得到,注意下面的代码:
Map map=new HashMap();
map.put("a","1");
map.put("b","2");
map.put("c","3");
map.put("d","4");
Set keySet = map.keySet(); // 得到key的set
Iterator iter = keySet.iterator();
while(iter.hasNext()){
String key = (String)iter.next();
String value = map.get(key);
System.out.println(key+":"+value);
}
}
上面的问题:
Map map2 = new HashMap();
map2 = atxt.get(0); //报错,Type mismatch: cannot convert from Object to Map
这是因为:不知道你的list里面装的是什么类型,你取出来的时候,你也没告诉他是什么类型,直接给了Map类型的变量才出错。
这样写:
Map map2 = (Map)atxt.get(0);
或者:
List<Map> atxt = new ArrayList<Map>();
...
Map map2 = atxt.get(0);
作者:
李伟
时间:
2012-6-25 17:38
可以改成:
import java.util.*;
class ArrayMap
{
public static void main(String[] args)
{
List l= new ArrayList();
Map m=new HashMap();
m.put("a","1");
m.put("b","2");
m.put("c","3");
m.put("d","4");
l.addAll(0,m.entrySet());//
必须先把m转换成集合才能添加到l里
Map m2= new HashMap();
m2.putAll(m);
System.out.println(l);
System.out.println(m2);
System.out.println(l.get(0));
}
}
作者:
李伟
时间:
2012-6-25 17:39
必须先把m转换成
Set集合
才能添加到l里
作者:
李伟
时间:
2012-6-25 17:40
可以改成:
import java.util.*;
class ArrayMap
{
public static void main(String[] args)
{
List l= new ArrayList();
Map m=new HashMap();
m.put("a","1");
m.put("b","2");
m.put("c","3");
m.put("d","4");
l.addAll(0,m.entrySet());//
必须先把m转换成Set集合才能添加到l里
Map m2= new HashMap();
m2.putAll(m);
System.out.println(l);
System.out.println(m2);
System.out.println(l.get(0));
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2