JAVA基础——集合 原创

发布于 2022-2-13 22:41
浏览
1收藏

春节不停更,此文正在参加「星光计划-春节更帖活动」  链接:https://harmonyos.51cto.com/posts/9923

集合:对象的容器,定义了对多个对象进行操作的常用方法。可实现数组的功能。

JAVA基础——集合-开源基础软件社区

 

数组和集合的区别:

①数组长度固定,集合长度不固定
②数组可以存储基本类型和引用类型,集合只能存储引用类型


Collection体系集合

List接口特点:有序、有下标,元素可重复

1) void add(int index, Object ele):在index位置插入ele元素
2) boolean addAll(int index, Collection eles):从index位置开始将
eles中的所有元素添加进来
3) Object get(int index):获取指定index位置的元素
4) int indexOf(Object obj):返回obj在集合中首次出现的位置
5) int lastlndexOf(Object obj):返回obj在当前集合中未次出现的位置
6) Object remove(int index):移除指定index位置的元素,并返回此元素
7) Object set(int index, Object ele):设置指定index位置的元素为ele ,
相当于是替换.
8) List subList(int fromlndex, int tolndex);返回从fromIndex到
tolndex位置的子集合

Set接口特点:无序、无下标、元素不能重复

ArrayList常用方法:


1) add:添加单个元素 
2) remove:删除指定元素
3) contains:查找元素是否存在
4) size:获取元素个数
5) isEmpty:判断是否为空
6) clear:清空
7) addAll:添加多个元素
8) containsAll:查找多个元素是否都存在
9) removeAll:删除多个元素

迭代器遍历:Iterator对象称为迭代器,主要用于遍历Collection集合的元素


迭代器执行原理:

JAVA基础——集合-开源基础软件社区

 注意:在调用it.next()方法之前必须要调用it.hasNext()进行检测。若不调用,且下一条记录无效,直接调用it.next()会抛出NoSuchElementException异常。


增强for循环:就是简化版的iterator(for循环底层仍然是迭代器)

基本语法:for(元素类型 元素名:集合名或数组名)

ArrayList底层结构和源码分析
ArrayList(线程不安全,没有Synchronized,执行效率高,多线程不使用)基本等同于Vector

结论

1)ArrayList中维护了一个Object类型的数组elementData. 
transient Object[] elementData;//transient表示瞬间,短暂的,表示该属性不会被序列号
2)当创建ArrayList对象时,如果使用的是无参构造器,则初始elementData容量为0,第1
次添加,则扩容elementData为10,如需要再次扩容,则扩容elementData为1.5倍。

 Vector底层结构和源码分析
①vector底层是一个对象数组,protected Object[] elementData;

②Vector是线程同步,即线程安全。Vector类的操作方法有synchronized

vector和ArrayList的比较

JAVA基础——集合-开源基础软件社区

 LinkedList底层结构和源码分析
1)LinkedList底层实现了双向链表和双端队列特点


2)可以添加任意元素(元素可以重复),包括null


3)线程不安全,没有实现同步


LinkedList底层操作机制
1) LinkedList底层维护了一个双向链表.
2)LinkedList中维护了两个属性first和last分别指向首节点和尾节点3)每个节点(Node对象),里面又维护了prev、next、item三个属性,
其中通过
prev指向前一个,通过next指向后一个节点。最终实现双向链表.
4)所以LinkedList的元素的添加和删除,不是通过数组完成的,相对来说效率较高。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏 1
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐