-
Java连载149-集合类小节
一、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是使用了一个同步代码的块的形式。
六、源码:
-
CSDN:https://blog.csdn.net/weixin_44630050
出 处:https://www.cnblogs.com/ruigege0000/p/15627167.html
最新更新
带有参数的装饰器
类装饰器
django中的auth模块与admin后台管理
python的日期处理
字符串常用方法
基本数据类型概述
python-map()函数基本用法
python带你实现任意下载AcFun视频数据~
bbs项目之注册功能
变量的定义和使用
三大常用数据库事务详解之三:事务运行
三大常用关系型数据库事务详解之二:基
三大关系型数据库事务详解之一:基本概
MongoDB常用命令(2)
MongoDB基本介绍与安装(1)
SQLServer触发器调用JavaWeb接口
SQL Server索引的原理深入解析
SqlServer2016模糊匹配的三种方式及效率问题
SQL中Truncate的用法
sqlserver 多表关联时在where语句中慎用tri
VB.NET中如何快速访问注册表
ASP.NET中图象处理过程详解
Vue(1)Vue安装与使用
JavaScript 语言入门
js将一段字符串的首字母转成大写
纯原生html编写的h5视频播放器
H5仿原生app短信验证码vue2.0组件附源码地
TypeScript(4)接口
TypeScript(3)基础类型
TypeScript(2)WebStorm自动编译TypeScript配置