集合
文章平均质量分 79
集合
小涂学编程
这个作者很懒,什么都没留下…
展开
-
Java集合入门
ArrayList:底层是数组。LinkedList:底层是双向链表。Vector:底层是数组,线程安全的,效率较低,使用较少。HashSet:底层是HashMap,放到HashSet集合中的元素等同于放到HashMap集合key部分了。TreeSet:底层是TreeMap,放到TreeSet集合中的元素等同于放到TreeMap集合key部分了。HashMap:底层是哈希表。Hashtable:底层也是哈希表,只不过线程安全的,效率较低,使用较少。原创 2022-09-11 20:11:50 · 3 阅读 · 0 评论 -
Iterator接口(顶层接口)
每一个集合都有自己的数据结构(就是容器中存储数据的方式),都有特定的取出自己内部元素的方式。将容器内部的取出方式按照一个统一的规则向外提供,这个规则就是Iterator接口,使得对容器的遍历操作与其具体的底层实现相隔离,达到解耦的效果。也就说,只要通过该接口就可以取出Collection集合中的元素,至于每一个具体的容器依据自己的数据结构,如何实现的具体取出细节,这个不用关心,这样就降低了取出元素和具体集合的耦合性。Iterator接口,这是一个用于遍历集合中元素的接口,主要包含。使用迭代器遍历集合元素。原创 2022-09-11 22:15:10 · 3 阅读 · 0 评论 -
ArrayList集合
ArrayList是基于数组的集合,数组的容量是在定义的时候确定的,如果数组满了,再插⼊,就会数组 溢出。因为数组扩容效率比较低,建议在使用ArrayList集合的时候预估计元素的个数,给定一个初始化容量。每个元素占用的空间大小相同,内存地址是连续的,知道首元素内存地址,然后知道下标,通过数学表达式计算出元素的内存地址,所以检索效率最高。(底层先创建了一个长度为0的数组,当添加第一个元素的时候,初始化容量10)所以线性复杂度为(n)不足,因此在添加元素之前,都需要进行剩余空间检查,如果需要则自动扩容。原创 2022-09-12 18:02:23 · 5 阅读 · 0 评论 -
LinkedList集合
单向链表数据结构对于链表数据结构来说:基本的单元是节点Node。对于单向链表来说:任何一个节点Node中都有两个属性:第一:存储的数据。第二:下一节点的内存地址。链表优点:随机增删元素效率较高。(因为增删元素不涉及到大量元素位移)由于链表上的元素在空间存储上内存地址不连续。所以随即增删元素的时候不会有大量元素位移,因此随即增删效率较高。在以后的开发中,如果遇到随即增删集合中元素的业务比较多时,建议使用LinkedList。原创 2022-09-12 18:19:02 · 5 阅读 · 0 评论 -
Vevtor集合
这里搞清楚一个问题,并不是说线程安全的集合就不会报fail-fast,而是报fail-safe,你得搞清楚前面所说答案的原理,出现fail-safe是因为他们在实现增删的底层机制不一样,就像上面说的,会有一个副本,而像arrayList、linekdList、verctor等,他们底层就是对着真正的引用进行操作,所以才会发生异常。原创 2022-09-12 18:26:38 · 5 阅读 · 0 评论 -
Collection接口
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行,于是衍生出两个子类接口List和Set。在没有使用泛型之前,Collection可以存储Object的所有子类型。使用了泛型之后,Collection只能存储某个类型。(集合不能存储基本数据类型,也不能存储Java对象,只能存储Java对象的内存地址)原创 2022-09-12 15:56:56 · 28 阅读 · 0 评论 -
List接口
List集合。存储的元素是有序的(有索引值的)有序:List集合中的元素有下标。从0开始,以1递增可以存储重复元素可重复:存储一个1,还可以再存储1。原创 2022-09-12 16:22:03 · 4 阅读 · 0 评论