Java 集合类的一点总结

集合类位于包java.util.*,集合类存放的是对象的引用


Collections 和 Collection
Collections 是集合的包装类,例如 Integer一样,这个类提供了一系列用于操作集合的静态方法,Collections不能实例化,就像一个工具类
Collection 是集合类的一个接口, Set, List, Queue都实现了这个接口,其为各种具体的集合提供了最大化的统一操作方式


Vector ArrayList LinkedList
三者都实现了List接口,另外Vector ArrayList都是以Array为基础来实现的,而LinkedList的每个Node都含有data和nextNode两个元素


用途方面
Vector ArrayList更适合查询, LinkedList更适合添加与删除操作,原因下表:


Vector和ArrayList:
根据索引i查询数据,在队列的末尾增加/移除数据所用的代价是相同的,均为O(1)
而在队列的其他位置i增加/移除数据的代价则会增加至O(n-i),原因是其第i和i之后的元素都要进行位移操作,而位移操作的本质就是生成一个扩容后的原数组的拷贝,然后对这个拷贝从索引I开始进行ArrayCopy操作


LinkedList:
根据索引查询代价为O(i),在队列的末尾增加/移除数据所用的代价为O(i)
在队列的其他位置i增加/移除数据的代价则为O(1),因为额外操作里只要修改一个引用对象的nextNode就行了


Vector和ArrayList的几点区别

1.Vector 的方法上都带有synchronized关键字修饰,也就是大多数人说的它是线程安全的原因, 而ArrayList没有。

但是线程安全会带来额外的支出,因为不需要同步的时候,ArrayList性能比Vector好些.

另外对于复合性的操作,程序员仍需要使用synchronized block之类的手段以保证同步,这样的话真感觉大部分的时候还是ArrayList更好用些啊,要同步的时候大家都是用synchronized 块或者方法,不用同步的时候ArrayList的性能比Vector还快一些, 除了那种对于Vector的操作每次都是调用其一个方法就能完成的情况.....

2.在扩容方面,Vector每次扩容时容量都会增长为原来的一倍,ArrayList只会增长50%
因此保存大量数据的时候Vector更有优势





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值