免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 920 | 回复: 0
打印 上一主题 下一主题

对象的集合 二(续) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-30 10:46 |只看该作者 |倒序浏览
  Map相关子类
  主要包含以下几种类型的Map,包括:HashMap,TreeMap,LinkedMap,  WeakHashMap,IdentityHashMap  HashMap     插入和查询的开销是固定的。可以通过ctor设置容量和负载因子,调整容器的性能。  LinkedHashMap     类似于HashMap,但迭代遍历时取得键值对的顺序是插入顺序或者是最近最少使用次序。只比HashMap慢一点,而在迭代访问时反而更快,因为内部使用链表维护内部次序。  TreeMap     基于红黑树的实现。查看“键”或“键值对”时,它们会被排序(由Comparable|Comparator)决定。TreeMap的特点在于所得到的结果是经过排序的,TreeMap是唯一带有subMap方法的Map。  WeakHashMap  弱键映射,允许释放映射所指向的对象,未解决某类特殊问题而设计的。如果映射之外没有引用指向那个键,则此键可以被垃圾回收器回收。  IdentityHashMap    使用==代替equals()对键进行比较的散列映射。
  
#测试Random生成随机数的分布
package com.biaoflying;import java.util.*;class Counter{    int i;    public String toString(){        return ""+i;    }}public class RandomTest1{    public static void main(String[] args){        Random rand=new Random();        Integer ky=0;        Map map=new HashMap();        for(int i=0;i            ky=new Integer(rand.nextInt(20));            //System.out.println(ky);            if(map.containsKey(ky))                ((Counter)map.get(ky)).i++;            else                map.put(ky,new Counter());        }        System.out.println(map);    }}
#一次输出的结果如下,可以看到还是挺均匀的:{0=494, 1=479, 2=522, 3=498, 4=494, 5=494, 6=486, 7=490, 8=526,9=551, 10=496, 11=487, 12=496, 13=556, 14=512, 15=483, 17=468, 16=475, 19=475, 18=498}
#使用SortedMap&LinkedHashMap
  TreeMap是SortedMap当前唯一的实现,提供了以下的功能方法
  Comparator comparator()返回当前Map采用的Comparator,若返回null则表示以自然方式排序
  Object firstKey()返回Map的第一个键
  Object lastKey()返回Map中最后一个键
  SortedMap subMap(fromKey,toKey)生成Map的子集,范围由参数指定
  SortedMap headMap(toKey)
  SortedMap tailMap(fromKey)
  例子参见P343 TIJ
----------------------------------------------------------
  LinkedHashMap与HashMap类似为了提高速度散列化所有的元素,但在遍历键值对时又以元素的插入顺序返回。此外可以在ctor中设定,使之采用基于LRU算法来返回键值对。于是最近没有访问过的元素会出现在队列前面。
  例子参见P345 TIJ
  Map查询与插入的原理及其流程可以参看P348-353。
  hashcode,equals,Map.Entry.
  
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/63463/showart_511754.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP