Java连载149-集合类小节

Java 专栏收录该内容
157 篇文章 0 订阅

一、Collection和Collections之间的区别

  • Collection是一个接口类,是Set和List接口的父接口
  • Collections是一个工具类,是不应该初始化为一个对象,内部含有很多对集合操作的静态方法

二、Set和List之间的区别

  • Set和List都是接口,但是各有不同
  • Set是一个无序集合,对于放入的元素是不能重复,可以用于进行去重
  • List是一个有序集合,按照先进先放的原则

三、ArrayList\LinkedList\Vector之间的区别

  • ArrayList的底层是一个数组;它的初始容量很小,没有指定容量的话,自动扩容为原来size的1.5倍;我们需要的空间很大的时间,可以手动给它一个初始的容量;内部含有get()和set()方法用于对元素进行检索等等;这是一个线程不安全的List
  • Vector的底层也是一个数组;它的初始容量很小,没有指定容量的话,自动扩容为原来size的2倍;我们需要的空间很大的时间,可以手动给它一个初始的容量;这是线程安全的List
  • LinkedList的底层是一个双向链表,因此对于新增或者删除元素的时候具有较好的性能;这也是一个线程不安全的List.

注意:ArrayList内部是用了transient进行优化,内部代码中writeObject()方法中,仅存储了非null的元素,而Vector则是存储了所有的元素,因此在内容相同的情况下,Vector所占的空间是比ArrayList大的;
从某种意义上来讲,ArrayList是在当线程下的一种优化了的存储方法,Vector则是利用synchronnized进行同步,保证了线程安全。

四、一种扩容的代码

int oldCapacity = 5;
int newCapacity = oldCapacity + (oldCapacity << 1); // 扩容为原来的1.5倍

五、SynchronizedList和Vector之间的区别

  • 先说使用方法;
    • 在多线程的情况下,可以直接使用Vector来构造一个线程安全的List来进行使用
    • SynchronizedList是Collections的一个内部类,我们可以这样使用它
List list1 = new ArrayList();
SynchronizedList list = Collections.synchronizedList(list1);
  • 二者之间的区别在于,Vector是使用同步方法的形式,SynchronizedList是使用了一个同步代码的块的形式。

六、源码:

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

睿里睿气

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值