集合包(实现方式以及性能对比)

Java程序设计语言+Java虚拟机+API类库统称为JDK。
对于构建分布式Java应用而言,最重要的有集合、并发、网络(包括网络BIO以及网络NIO)以及序列化,反序列化。
[b]一、集合包[/b]
集合包是Java最常用的包,最常用的有Collection和Map两个接口实现的类,Collection用于存放单个对象,Map用于存放Key-Value形式的键值对。
1、Collection中常用的又分为两个子接口:List和Set,两者明显的区别是List支持重复的对象,而Set不能。
List实现的类有:ArrayList/LinkedList/Vector/Stack;
Set实现的类有:HashSet/TreeSet
[List]
[color=darkred]ArrayList[/color]:基于数组方式实现,非线程安全的
[color=green]LinkedList[/color]:基于双向链表实现的,非线程安全
[color=blue]Vector[/color]:与ArrayList一样,也是基于数组实现的,是基于Synchronized实现的线程安全的ArrayList。
[color=gray]Stack[/color]:继承于Vector,实现了LIFO的弹出与压入的操作。

[Set]
HashSet:基于HashMap实现,非线程安全的。
TreeSet:基于TreeMap实现,非线程安全
特别注意的:对于Set,不能使用get(Object key)方法获取存储在Set集合中的对象,只能通过遍历来实现。
2、Map中常用的类有HashMap和TreeMap
[color=olive]HashMap[/color]:采用数组方式存储key、value构成的Entry对象,非线程安全的,在遍历时无法保持顺序的。
[color=red]TreeMap[/color]:基于红黑树实现,非线程安全,一个支持排序的Map实现。


在单线程下:
在增加元素上,ArrayLisy的性能较差。
在查找元素上,ArrayList、LinkedList、Vector、Stack的性能略差一些,Set、Map类型速度会快一些。
在删除元素上,除除TreeSet和TreeMap外,其他集合类的性能基本无差距。TreeSet基于TreeMap,TreeMap删除时需要排序,所以性能低一些。

在多线程下:
哥集合类的性能下降非常明显,并且随着线程的增加,下降的就越快,相对而言,Set和Map的实现表现好一些。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值