黑马程序员技术交流社区

标题: 接口 Map.Entry<K,V> [打印本页]

作者: yangchao313    时间: 2013-8-31 21:43
标题: 接口 Map.Entry<K,V>
本帖最后由 yangchao313 于 2013-9-2 11:16 编辑

接口 Map.Entry<K,V>
谁能解释一下   ,这块不是很  

作者: 泡沫之夏    时间: 2013-8-31 22:22
这里用到了多太,它就是一个内部内接口,接收它的子类Entry<K,V>,可以查看源码就了解了
作者: 黄文伯    时间: 2013-8-31 22:37
亲,如问题已解决请将分类的“未解决”改为“已解决”。
以后的问题贴也要及时更改分类哦~
作者: 苏联兵    时间: 2013-9-1 00:29
本帖最后由 苏联兵 于 2013-9-1 00:32 编辑

我来试试看看能不能解决你的问题,回答的不好还请批评,首先Map没有继承Collection接口,它提供Key到Value的映射,Map接口提供三种集合的视图,Map的内容可以被当作一组Key集合,一组Value集合,或一组Key-Value映射。
Hashtable继承Map接口,实现一个Key-Value映射的哈希表,任何非空(non-null)的对象都可以作为Key或Value,添加数据使用put(Key,Value)方法,取出数据使用get(Key)方法,这两个基本操作的时间开销为常数。
Hashtable通过initial capacity 和 load factor两个参数调整性能,通常默认的load factor 0.75较好的实现了时间和空间的均衡,增大load factor 可以节省空间,但相应的查找时间将增大,这会影响想get 和 put这样的操作。Hashtable 是同步,它可以存储重载由Object 定义的hashCode()和equals() 方法和对象。Hashtable 的构造方法如下:
Hashtable()  //默认构造方法
Hashtable(int  size) //创建一个散列表,该散列表具有由size指定的原始大小。
Hashtable(int size, float fillRatio) / /该散列表具有由size指定的原始大小和有fillRatio指定的填充比必须介于0.0和0.1之间。
Hashtable(Map m) //创建一个散列表,该散列表用m中的元素初始化。
  1. 下面是一个Hashtable的实例:
  2. import    java.util.*;
  3. class HashtableTest_1{
  4.    public static void main(String[] args){
  5.         Hashtable hh=new Hashtable();
  6.          hh.put("a", "name");//姓名
  7.          hh.put("b",  "age");//年龄
  8.       hh.put("c",  "address");//地址
  9.       hh.put("d",  "wage");//工资
  10. Enumeration er = hh.keys//返回此哈希表中的键的枚举。
  11. while(er.hashMoreElement(){
  12. //判断此枚举是否包含更多元素
  13.      Object o = er.nextElement();
  14.   //返回此枚举的下一个元素,也就是key值
  15.    Object v = hh.get(o);
  16. //根据key将Value取出
  17. System.out.println(o+"="+v);
  18. 输出
  19.      }
  20.     }
  21. }
复制代码
由于Hashtable属于散列表,所以并没有按顺序存储。
                                   HashMap
HashMap将“关键字/值”对存储到散列表中,所以HashMap中用于散列和查找的只能是主关键字,其他关键字不能用于散列或查找。HashMap和Hashtable相似,不同之处在于HashMap是非同步的,并且允许null,即null value 和null key。HashMap仍然使用哈希函数来计算关键字的哈希码,并非存储在对应位置上,所以记录之间是无序的,但它的存储和查找都很快,远远超过其他类型的集合,HashMap中的方法很多,这里就不举例了,HashMap和的使用方式基本相同,两者最大的不同是,Hashtable的方法是synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须提供外同步。Hashtable和HashMap采用的算法集合都一样,所以性能不会有很大的差异。它们都完成了Map接口。说的有点多希望能帮到你。
作者: 辛春鹏    时间: 2013-9-2 08:29
这是一个接口啦。映射项(键-值对),也就是一种关系的映射。当集合Map中的对象使用Map.entrySet 方法时就会返回映射的 collection 视图。返回视图中的元素属于此类。得到这个关系之后,就可以使用此接口中的方法
K        getKey()
          返回与此项对应的键。
V        getValue()
          返回与此项对应的值。
从而得到集合中的键和值。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2