Java容器学习之ArrayList】的更多相关文章

一.概述 ArrayList是java中十分常用的集合类,继承于AbstractList,并实现了List.RandomAccess.Cloneable和Serializable接口.ArrayList底层是使用数组来实现的,是一个动态的数组队列,它具有以下特点. 可以动态扩容.缩容 ArrayList的操作不是线程安全的 允许元素重复,允许元素为空 ArrayList初始默认大小是10,每次扩容时是原大小的1.5倍,如果一开始就知道需要的Lsit长度,可以指定ArrayList的长度,减少扩容…
Java容器学习--List 基础知识 数组: ​ 优点:随机存取,可以快速访问元素 ​ 缺点:静态分配内存,存在空间闲置或者溢出现象:不适合进行插入和删除操作,需要移动大量元素. 链表: ​ 优点:动态分配内存,不浪费同时也够用:对于大量元素的插入.删除操作链表优势十分明显. ​ 缺点:不能随机访问元素,得从头到尾遍历. 学科联系 ​ 联想c语言数据结构线性表:顺序表采用的一组地址连续的存储单元依次存储元素,可以看成一个静态的数组:而链表是用一组任意存储单元存储数据元素(这组单元可连续也可不连…
容器是java中重要的一部分,其接口的结构如下 Collection | ------------------ Map | | | Set List HashMap | HashSet 顾名思义,容器是用来存储东西的,对于对象,容器中存储的实质上是对象的引用,即对象的地址. Collection接口有两个子接口Set和List,除了均是用来存储元素这个共性之外,分别具有不同的特点. List类别的容器一般具有有序的特点,当元素插入删除时,维护了元素的顺序,并且可以放置重复元素. Set类别的容器…
ArrayList在平常用的还挺多的,用起来十分舒服,顺手.这里来学习一下它的源码. 类定义 下面是类的定义: public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable { } 实现的接口还挺多的. 类属性 首先来看下一ArrayList的几个属性: 1. DEFAULT_CAPACITY:初始容量…
ArrayList: 初始容量为10,底层实现是一个数组,Object[] elementData 自动扩容机制,当添加一个元素时,数组长度超过了elementData.leng,则会按照1.5倍进行扩容 private void grow() {         int oldCapacity = elementData.length;         int newCapacity = oldCapacity + (oldCapacity >> 1);         elementDat…
一:迭代器 刚开始学容器,做了个简单的练习题.. import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class CollectionTest { public static void main(String[] args) { Collection<String>collstr = new ArrayList<String>(); //创建一个元素为S…
容器 容器的组成 容器有两个接口Map和Collection. collection接口有List类和set类. List类可以分为:Vector.LinkedList.ArrayList.CopyOnWriteArrayList Set类可以分为:HashSet.LinkedHashSet.TreeSet Map接口拥有:HashMap.LinkedHashMap.TreeMap.ConcurrentHashMap 结论: 如果是集合类型,有List和Set供我们选择.List的特点是插入有序…
List接口继承了Collcetion接口,Collection接口又继承了超级接口Iterable,List是有序列表,实现类有ArrayList.LinkedList.Vector.Stack等. ArrayList是基于数组实现的,是一个数组队列,可以动态扩容 LinkedList是基于链表实现的,是一个双向循环列表,可以当做堆栈使用 Vector是基于数组实现的,是一个矢量队列,是线程安全的 Stack是基于数组实现的,继承了Vector,是先进后出 现在从List的常用方法做一个梳理.…
Collection List 在Collection的基础上引入了有序的概念,位置精确:允许相同元素.在列表上迭代通常优于索引遍历.特殊的ListIterator迭代器允许元素插入.替换,双向访问,从列表中的制定位置开始(根据index获取index位置的元素).未实现get方法. AbstractList 实现了List中的一些方法,支持随机访问.lastIndexOf通过特殊迭代器能够制定开始位置,从后遍历的特性来实现.直接通过指定的位置,借助特殊迭代器找到. Vector 实现可增长的数…
引用数据类型 引用数据类型分类,提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类.Random类.我们可以把类的类型为两种: 第一种,Java为我们提供好的类,如Scanner类,Random类等,这些已存在的类中包含了很多的方法与属性,可供我们使用. 第二种,我们自己创建的类,按照类的定义标准,可以在类中包含多个方法与属性,来供我们使用. 这里我们主要介绍第二种情况的简单使用. 自定义数据类型概述 在Java中,将现实生活中的事物抽象成了代码.这时,我们可以使用自定义的…