注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小葫芦君(汉斯的博客)

博客迁移到新博客:https://blog.ssxingshou.com

 
 
 

日志

 
 
关于我

小小葫芦商城,为您提供高品质的商品,一流的产品,一流的包装服务,一流的物流服务,放心购买

网易考拉推荐

Java工具类学习笔记  

2011-12-13 09:37:26|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
集合类
  • Set
    • HashSet
      • 优点:
          后台实现一个hash table 加速get和contains方法。后台使用数组保存
        缺点:
         默认大小为16, 如果超过则需要重新申请内存空间,大小为原来的两倍,并把原来的数据内容复制到
         新的内存空间中。
         线程不安全(需通过Collections.synchronizedList方法设置)
         加入的元素顺序会因其内部的hash排序而改变

        注:通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。

    • LinkedHashSet
      • 优点:
          后台实现一个hash table 加速get和contains方法。后台使用链表保存
        缺点:
         默认大小为16, 如果超过则需要重新申请内存空间,大小为原来的两倍,并把原来的数据内容复制到
         新的内存空间中。
         线程不安全(需通过Collections.synchronizedList方法设置)
         加入的元素顺序会因其内部的hash排序而改变

        注:通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。

    • TreeSet
      • 优点:
          通过一个HashMap来实现数据的保存,内部实现红黑树数据结构,使所有元素按升序保存。
          提供高效的get和contains方法,保存操作的效率为log(n)
        缺点:
         默认大小为16, 如果超过则需要重新申请内存空间,大小为原来的两倍,并把原来的数据内容复制到
         新的内存空间中(来自HashMap)。
         线程不安全(需通过Collections.synchronizedList方法设置)
         加入的元素升级排序而改变

        注:treeset对元素有要求,必须实现Comparable接口或是Comparator 接口)

        注:通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。

    • CopyOnWriteArraySet
      • 优点:
         针对于对Set操作的情况有很多变化时使用,优其是在高并发的情况不想使用同步控制锁时
        缺点:
         消耗比较大的资料,每次作更新操作时,都会重新Copy一块内存后,再做合并操作。
  • List
    • ArrayList
      • 优点:
           使用数组,提供快速的get,add和iterate方法,占用比较小的内存空间
        缺点:
           线程不安全(需通过Collections.synchronizedList方法设置)
           insert和remove操作,非常慢(需要移动数组元素来实现)
           当size超过时,需要新建一个较大的数据(默认大小是10,增量是 (size * 3)/2 + 1,
           且把原来的数据都复制到新的上面)

    • LinkedList
      • 优点:
           使用链表结构,提供快速的add, insert, remove方法,占用比较小的内存空间
        缺点:
           线程不安全(需通过Collections.synchronizedList方法设置)
           get操作,非常慢(需要从head一级级遍历查找)

    • Vector
      • 优点:
         线程安全。
        缺点:
         相对于ArrayList效率要低。拥有ArrayList的缺点。
    • CopyOnWriteArrayList
      • 优点:
         针对于对List操作的情况有很多变化时使用,优其是在高并发的情况不想使用同步控制锁时
        缺点:
         消耗比较大的资料,每次作更新操作时,都会重新Copy一块内存后,再做合并操作。
    • TreeList(apache commons-collections)提供
      • 优点:
         基于二叉数  提供比较快速的get, add,insert,iterate,remove方法。其中get,add和iterate方法比ArrayList稍慢一点。
        缺点:
         相对于ArrayList和LinkedList占比较多的内存空间
         线程不安全(需通过Collections.synchronizedList方法设置)

  • Map
    • ConcurrentHashMap
      • 优点:
         基于二叉数  提供比较快速的get, add,iterate方法。默认大小的16.
         它是线程安全
        缺点:
         如果大小超过设定的大小时,效率会非常低。它会重新申请内存空间(原来空间的两倍),同时把原来的值复制到新内存空间上。

  评论这张
 
阅读(683)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017