java基础之集合List-ArrayList、LinkedList、Vector的差别
PS:本篇博客主要參考jdk的底层源代码。而非自己动手写代码。
请问ArrayList、LinkedList、Vector的差别
①ArrayList底层实际上是採用数组实现的(而且该数组的类型的Object类型的)
②假设jdk6,採用Array.copyOf()方法来生成一个新的数组,假设是jdk5,採用的是System.arraycopy()方法(当加入的数据量大于数组的长度时候)
③List list = newArrayList()时,底层会生成一个长度为10的数组来存放对象
④ArrayList、Vector底层都是採用数组实现的
⑤对于ArrayList。方法都不是同步的,对于Vector。大部分public方法都是同步的
⑥LinkedList採用双向循环链表
⑦对于ArrayList,查询速度非常快,添加和删除(非最后一个节点)操作非常慢(本质上由数组的特性决定的)
⑧对于LinkedList,查询速度很慢,添加和删除操作很快(本质上是由双向循环链表决定的)
1、ArrayList的默认构造方法代码(包含相关代码):
private transient Object elementData[]; public ArrayList(int i) {
if (i < 0) {
throw new IllegalArgumentException((new StringBuilder())
.append("Illegal Capacity: ").append(i).toString());
} else {
elementData = new Object[i];
return;
}
} public ArrayList() {
this(10);
}
2、LinkList默认构造方法 (包含相关代码)
public LinkedList() {
header = new Entry(null, null, null);
size = 0;
header.next = header.previous = header;
} private static class Entry { Object element;
Entry next;
Entry previous; Entry(Object obj, Entry entry1, Entry entry2) {
element = obj;
next = entry1;
previous = entry2;
}
} private transient Entry header;
private transient int size;
3、Vector默认构造方法(包含相关代码)
public Vector(int i, int j) {
if (i < 0) {
throw new IllegalArgumentException((new StringBuilder())
.append("Illegal Capacity: ").append(i).toString());
} else {
elementData = new Object[i];
capacityIncrement = j;
return;
}
} public Vector(int i) {
this(i, 0);
} public Vector() {
this(10);
} protected Object elementData[]; protected int capacityIncrement;
java基础之集合List-ArrayList、LinkedList、Vector的差别的更多相关文章
- List集合与Set集合(ArrayList,LinkedList,Vector,HashSet,LinkedHashSet,可变参数)
List集合介绍及常用方法 import java.util.ArrayList; import java.util.Iterator; import java.util.List; /* java. ...
- Java基础系列--集合之ArrayList
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8494618.html 一.概述 ArrayList是Java集合体系中最常使用,也是最简单 ...
- java基础,集合,Arraylist,源码解析(基础)
ArrayList 是什么,定义? 这是动态的数组,它提供了动态的增加和减少元素,实现了List接口(List实现Collection,所以也实现Collection接口)灵活的设置数组的大小等好处 ...
- Java基础之 集合体系结构(Collection、List、ArrayList、LinkedList、Vector)
Java基础之 集合体系结构详细笔记(Collection.List.ArrayList.LinkedList.Vector) 集合是JavaSE的重要组成部分,其与数据结构的知识密切相联,集合体系就 ...
- java基础解析系列(十)---ArrayList和LinkedList源码及使用分析
java基础解析系列(十)---ArrayList和LinkedList源码及使用分析 目录 java基础解析系列(一)---String.StringBuffer.StringBuilder jav ...
- ArrayList LinkedList Vector
ArrayList是基于数组实现的,没有容量的限制. 在删除元素的时候,并不会减少数组的容量大小,可以调用ArrayList的trimeToSize()来缩小数组的容量. ArrayList, Lin ...
- 第6节:Java基础 - 三大集合(上)
第6节:Java基础 - 三大集合(上) 本小节是Java基础篇章的第四小节,主要介绍Java中的常用集合知识点,涉及到的内容包括Java中的三大集合的引出,以及HashMap,Hashtable和C ...
- Java基础——List集合整理(脑图,源码,面试题)
常在知乎牛客网关注Java的一些面试,了解过校招社招常面哪些内容.Java集合不仅使用频率高而且在初面中也常常被问到,何止是常常,关于ArrayList的扩容,HashMap的一些底层等等都被问到烂了 ...
- java基础技术集合面试【笔记】
java基础技术集合面试[笔记] Hashmap: 基于哈希表的 Map 接口的实现,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键(除了不同步和允许使用 null 之外,Ha ...
随机推荐
- Maven中pom.xml常用元素说明
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- [Immutable.js] Lightning Fast Immutable.js Equality Checks with Hash Codes
While Immutable.js offers .is() to confirm value equality between iterables it comes at the cost of ...
- 【COCOS2DX-对28游戏开发】 Cocos2d-x-3c 道路设计 CocosBase CocosNet CocosWidget
原文链接:http://blog.csdn.net/cocosviva/article/details/18970717 另一个比較不错的cocos2dx扩展库:https://github.com/ ...
- iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程
iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程 一.引言 二.初识CoreAnimation 三.锚点对几何属性的影响 四.Layer与View之间的关系 ...
- EEPlat vs saleforce 配置 Knowledge Article 演示样例
==================================================================================================== ...
- xtrabackup备份恢复测试
http://blog.chinaunix.net/uid-20682026-id-3319204.html
- javascript 之 this 用法
参考视频:http://www.imooc.com/video/6430 JavaScript中的this比较灵活,也是让很多初学者摸不到头脑,那么根据在不同的环境下,在同一个函数,不同的调用方式下, ...
- JQuery 获取指定url对应的html内容
用jquery的ajax类似的请求就可以了:比如: $.get("test.php", function(data){ alert("Data Loaded: " ...
- TreeView中右击直接获取节点的方法
在TreeView中无法直接右击得到一个节点,因为当你选中其中一个右击时(不能是第一个)他会默认跳到第一个. 有时我们要想直接右击得到选中的节点,又时我们又想选中直接右击跳出一个快捷菜单怎么办了! 在 ...
- .NET AOP的实现
一.AOP实现初步 AOP将软件系统分为两个部分:核心关注点和横切关注点.核心关注点更多的是Domain Logic,关注的是系统核心的业务:而横切关注点虽与核心的业务实现无关,但它却是一种更Comm ...