powerwind 发表于 2007-9-30 22:51

关于Map的一点理解

map翻译成中文是地图。这里说的不是地图,是Java的集合Map。

首先,如果你参加和Java相关的笔试或面试,很可能会被问到:HashMap与HashTable的区别是什么?这里就不解释了,随便百度或谷歌一下都有。

Map,顾名思义,就是一张地图,给个名字就可以找出你想找的地方。用标准的语言来说是,一个Key对应一个Value,通过Key就可以取得Value。

所以Map的主要两个方法是: Object put(Object key, Objectvalue) 和Object get(Object key)

这两个方法的使用没什么值得举例,实在太简单了。总之你put什么进去,就可以拿它的Key去取它的值。唯一要注意的是,Key一旦重复,就会覆盖掉旧的值。

Map有时候用于替代简单的getter和setter所需的属性,这个我不会解释,只好用例子了。


Map entry=new HashMap(20);
String getName(){
return (String)entry.get("name");
}
void setName(String name){
entry.put("name",name);
}


上述代码是简单的应用,可以扩展成支持多语言,重载put和get方法,可以传入参数取英文的或中文的Name,也可以通过Local判断。

另外一种应用是,在Map里保存Map,如map.put(key,new HashMap())。通过几层嵌套Map,恐怕自己也不知道自己要的东西放在哪了。如果你想保存几个相关的值而不想为此写一个Javabean,就可以用两层Map的方式了。


以上理解源于今晚听到的一段旋律,那段旋律让我想起了些东西,感觉就像曾经以那段旋律为Key,以某些东西为Value,存放在脑海这个Map里,现在一听到这段旋律,就取出了脑海里的东西。尝试执行remove(key)方法时却抛出了异常......

活在阳光下 发表于 2007-10-1 12:14

楼主在remove(key)方法时却抛出了异常,此方法有三种异常:
1.ClassCastException - 如果该键对于此映射是不合适的类型(可选)。
2.NullPointerException - 如果该键为 null 并且此映射不允许 null 键(可选)。
3.UnsupportedOperationException - 如果此映射不支持 remove 操作。

如果是第三种,难道楼主的脑子就是传说中只进不出的脑子王?
如果是第二种,证明那段key只是楼主的幻觉,即null.
如果是第一种...我也不知怎么解释,

开个玩笑,楼主别介意!

活在阳光下 发表于 2007-10-1 12:16

楼主在remove(key)方法时却抛出了异常,此方法有三种异常:
1.ClassCastException - 如果该键对于此映射是不合适的类型(可选)。
2.NullPointerException - 如果该键为 null 并且此映射不允许 null 键(可选)。
3.UnsupportedOperationException - 如果此映射不支持 remove 操作。

如果是第三种,难道楼主的脑子就是传说中只进不出的脑子王?
如果是第二种,证明那段key只是楼主的幻觉,即null.
如果是第一种...我也不知怎么解释,

开个玩笑,楼主别介意!

andylan 发表于 2007-10-3 22:18

lz的技术实在是强!!
页: [1]
查看完整版本: 关于Map的一点理解