Java集合笔记回顾总结(一)
2018-04-02 00:48
281 查看
Java集合就是一个容器。面向对象语言对事物的体现都是以对象的形式存在,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。如果往集合里存放基本数据类型,在存取过程中会有个自动装箱和拆箱。 因为容器中数据结构不同,容器有很多种。不断地将共性功能向上抽取,形成了集合体系,称之为集合框架。 集合和数组的区别: 1:数组是固定长度的;集合可变长度的。 2:数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。 3:数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMap
Collection:单列集合 |--List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引,允许重复元素。 |--Set:无序(存入和取出顺序有可能不一致),不允许重复元素,必须保证元素的唯一性。java.util.Collection接口中的共性方法有: 1.添加: boolean add(Object obj):一次添加一个。 boolean addAll(Collection c):将指定容器中的所有元素添加。 2.删除: void clear():将集合中的元素全删除,清空集合。 boolean remove(Object o):删除集合中指定的对象。注意:删除成功,集合的长度会改变。 boolean removeAll(Collection c):删除部分元素。部分元素和传入Collection一致。 3.取交集: boolean retainAll(Collection c):对当前集合中保留和指定集合中的相同的元素。 如果两个集合元素相同,返回false;如果retainAll修改了当前集合,返回true。 4.获取长度: int size():集合中有几个元素。 5.判断: boolean isEmpty():集合中是否有元素。 boolean contains(Object o):集合中是否包含指定元素。 boolean containsAll(Collection c)集合中是否包含指定的多个元素。 6.将集合转成数组。 toArray() toArray([]) 7.取出集合元素。 Iterator iterator():获取集合中元素上迭代功能的迭代器对象。Iterator<E>接口 java.util.Iterator接口是一个对 collection 进行迭代的迭代器,作用是取出集合中的元素。 Iterator iterator():获取集合中元素上迭代功能的迭代器对象。 迭代:取出元素的一种方式。有没有啊?有!取一个。还有没有啊?有!取一个。还有没有啊?没有。算了。 迭代器:具备着迭代功能的对象。迭代器对象不需要new。直接通过 iterator()方法获取即可。 迭代器是取出Collection集合中元素的公共方法。
每一个集合都有自己的数据结构,都有特定的取出自己内部元素的方式。为了便于操作所有的容器,取出元素,将容器内部的取出方式按照一个统一的规则向外提供,这个规则就是Iterator接口。 也就说,只要通过该接口就可以取出Collection集合中的元素,至于每一个具体的容器依据自己的数据结构,如何实现的具体取出细节,这个不用关心,这样就降低了取出元素和具体集合的耦合性。 Iterator it = coll.iterator();//获取容器中的迭代器对象,至于这个对象是是什么不重要。这对象肯定符合一个规则Iterator接口。为了降低容器的数据结构和取出容器元素的方法之间的耦合性,把访问、取出容器元素的容器的内部类进行共性抽取,即各种容器的相应内部类都实现了Iterator接口,实现了hasNext()、next()、remove()方法。List<E>接口 List本身是Collection接口的子接口,具备了Collection的所有方法。List集合的具体子类:子类之所以区分是因为内部的数据结构(存储数据的方式)不同。 List:有序(元素存入集合顺序和取出一致),元素都有索引,允许重复元素-->自定义元素类型都要复写equals方法。 |--Vector:底层的数据结构是数组。数组是可变长度的。线程同步的。增删和查询都巨慢! |--ArrayList:底层的也是数组结构,也是长度可变的。线程不同步的,替代了Vector。增删速度不快。查询速度很快。(因为在内存中是连续空间) |--LinkedList:底层的数据结构是链表,线程不同步的。增删速度很快。查询速度较慢。(因为在内存中需要一个个查询、判断地址来寻找下一元素) 可变长度数组的原理: 不断new新数组并将原数组元素复制到新数组。即当元素超出数组长度,会产生一个新数组,将原数组的数据复制到新数组中,再将新的元素添加到新数组中。 ArrayList:是按照原数组的50%延长。构造一个初始容量为 10 的空列表。 Vector:是按照原数组的100%延长。 首先学习List体系特有的共性方法,查阅方法发现List的特有方法都有索引(角标),这是该集合最大的特点。也就是说,List的特有方法都是围绕索引(角标)定义的。
Collection:单列集合 |--List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引,允许重复元素。 |--Set:无序(存入和取出顺序有可能不一致),不允许重复元素,必须保证元素的唯一性。java.util.Collection接口中的共性方法有: 1.添加: boolean add(Object obj):一次添加一个。 boolean addAll(Collection c):将指定容器中的所有元素添加。 2.删除: void clear():将集合中的元素全删除,清空集合。 boolean remove(Object o):删除集合中指定的对象。注意:删除成功,集合的长度会改变。 boolean removeAll(Collection c):删除部分元素。部分元素和传入Collection一致。 3.取交集: boolean retainAll(Collection c):对当前集合中保留和指定集合中的相同的元素。 如果两个集合元素相同,返回false;如果retainAll修改了当前集合,返回true。 4.获取长度: int size():集合中有几个元素。 5.判断: boolean isEmpty():集合中是否有元素。 boolean contains(Object o):集合中是否包含指定元素。 boolean containsAll(Collection c)集合中是否包含指定的多个元素。 6.将集合转成数组。 toArray() toArray([]) 7.取出集合元素。 Iterator iterator():获取集合中元素上迭代功能的迭代器对象。Iterator<E>接口 java.util.Iterator接口是一个对 collection 进行迭代的迭代器,作用是取出集合中的元素。 Iterator iterator():获取集合中元素上迭代功能的迭代器对象。 迭代:取出元素的一种方式。有没有啊?有!取一个。还有没有啊?有!取一个。还有没有啊?没有。算了。 迭代器:具备着迭代功能的对象。迭代器对象不需要new。直接通过 iterator()方法获取即可。 迭代器是取出Collection集合中元素的公共方法。
每一个集合都有自己的数据结构,都有特定的取出自己内部元素的方式。为了便于操作所有的容器,取出元素,将容器内部的取出方式按照一个统一的规则向外提供,这个规则就是Iterator接口。 也就说,只要通过该接口就可以取出Collection集合中的元素,至于每一个具体的容器依据自己的数据结构,如何实现的具体取出细节,这个不用关心,这样就降低了取出元素和具体集合的耦合性。 Iterator it = coll.iterator();//获取容器中的迭代器对象,至于这个对象是是什么不重要。这对象肯定符合一个规则Iterator接口。为了降低容器的数据结构和取出容器元素的方法之间的耦合性,把访问、取出容器元素的容器的内部类进行共性抽取,即各种容器的相应内部类都实现了Iterator接口,实现了hasNext()、next()、remove()方法。List<E>接口 List本身是Collection接口的子接口,具备了Collection的所有方法。List集合的具体子类:子类之所以区分是因为内部的数据结构(存储数据的方式)不同。 List:有序(元素存入集合顺序和取出一致),元素都有索引,允许重复元素-->自定义元素类型都要复写equals方法。 |--Vector:底层的数据结构是数组。数组是可变长度的。线程同步的。增删和查询都巨慢! |--ArrayList:底层的也是数组结构,也是长度可变的。线程不同步的,替代了Vector。增删速度不快。查询速度很快。(因为在内存中是连续空间) |--LinkedList:底层的数据结构是链表,线程不同步的。增删速度很快。查询速度较慢。(因为在内存中需要一个个查询、判断地址来寻找下一元素) 可变长度数组的原理: 不断new新数组并将原数组元素复制到新数组。即当元素超出数组长度,会产生一个新数组,将原数组的数据复制到新数组中,再将新的元素添加到新数组中。 ArrayList:是按照原数组的50%延长。构造一个初始容量为 10 的空列表。 Vector:是按照原数组的100%延长。 首先学习List体系特有的共性方法,查阅方法发现List的特有方法都有索引(角标),这是该集合最大的特点。也就是说,List的特有方法都是围绕索引(角标)定义的。
相关文章推荐
- JAVA集合笔记回顾总结(二)
- 黑马程序员--java 知识回顾--集合笔记
- Java基础知识强化之集合框架笔记74:各种集合常见功能 和 遍历方式总结
- Java 笔记之 ---集合总结
- Java 回顾笔记_集合框架之_linkedList_arrayList
- java学习笔记11--集合总结
- 《黑马程序员》java笔记->集合框架集合大总结
- 9.9-全栈Java笔记:遍历集合的N种方式总结&Collections工具类
- Java基础学习笔记16——(Set集合,Collection集合总结)
- Java 回顾笔记_集合框架_基本体系功能和迭代器
- Java学习笔记27(集合框架一:ArrayList回顾、Collection接口方法)
- java笔记总结_06_集合泛型
- Java常用集合总结笔记
- Java 回顾笔记_集合框架-泛型基本应用
- java笔记 集合总结
- Java高级个人笔记(java常用集合总结)
- Java笔记之集合框架Collectio与Map各个子类总结
- Java集合简单回顾总结
- Java 回顾笔记_集合框架-泛型高级应用
- 黑马程序员——Java学习笔记之11——“Collection集合”总结