集合和数组一样都是对多个数据进行存储操作的容器
*
– 集合长度可变,数组长度固定
– 集合可以存储不同数据类型元素,数组只能存储单一数据类型元素
– 集合只能存储引用类型元素,数组既可以存储引用类型元素又可以存储基本类型元素
单例集合,它包含了集合的基本操作和属性,它是List接口和Set接口的父接口
Collection接口通用方法来对集合实现基本操作:
add():添加元素
clear():清空元素
remove():删除元素
size():元素数量
toArray():集合转数组
contains():判断元素是否存在
isEmpry():判断集合是否为空
在Collection中LIst集合是进入先后有序保存可重复的类型,可对其中每个元素的插入位置进行精准地控制,可以通过索引来访问元素和遍历元素;在List集合中我们常使用到的就是ArrayList集合和LinkedList集合这个两个类
List接口定义的特有基本功能:
set():把索引查询到位置的元素修改成指定的值,并返回修改前的值
get():获取指定位置的元素
indexOf():索引指定元素
listIterator():列表迭代器
subList():截取集合
ArrayList集合实现List接口,它得到来LIst集合框架的基础功能;ArrayList集合底层是通过数组来实现的,随着元素的增加而动态扩充;
*
– 优点:查询快、效率高、可以存储重复值
– 缺点:增删慢、线程不安全
对于ArrayList来说带有尖括号<>则代表泛型,表示着集合当中所有的元素全都是统一的类型,泛型只能是引用类型而不能是基本类型
在ArrayList集合中存储的指定数据结构都是以对象为单位,所有的数据类型都必须转换成包装类
*
–
+ 自动装箱:基本类型转换成包装类(int => Integer)
+ 自动拆箱:包装类转换成基本类型(Integer => int)
*
–
+ ArrayList集合之所以和数组有着相似性功能,是因为ArrayList类内部封装类一个Object类型的数组,在ArrayList集合当中会有很多方法,比如index、indexOf都是在内部数组中调用Array对于的方法
*
–
+ 频繁的往ArrayList中添加和修改元素都会引起装箱和拆箱操作,会存在影响内部Object数组的效率
*
–
+ 数组扩容,每当ArrayList集合执行add()操作时,内部数组就会自动检查容量是否足够,容量足够则正常添加元素;容量不够时,数组会以自身容量的两倍来创建一个新的数组,将旧数组中数据存入到新数组,再旧数组丢弃掉;对于这个临界点扩容的操作会存在影响一些效率
LinkedList集合实现了LIst、Deque接口,底层是一个双向链表,属于线性表
*
– 优点:增删快、允许空值存在、线程安全
– 缺点:查询慢
创建LinkedList方法
LinKedList<string>list = new LinKedList<>();
添加到首列/添加到末列/添加元素
list.addFirst("冰墩墩")
list.addLast("雪容融")
list.add("李逍遥")
list.push("等同于add()")
删除首列元素/删除元素
list.removeFirst("冰墩墩")
list.removeLast("雪容融")
list.remove("李逍遥")
</string>
Map接口提供的是一种映射关系,存储元素是采用键值对方式(key-Value),能根据key快速的查询到Value值
*
– 特点:支持泛型、key值可重复/Value值不可重复
HashMap是Map接口实现类,底层是基于数组+链表(哈希表)实现的;HashMap集合整体就是一个数组,数组每个下标就代表着一个链表,链表节点中Vaule是Object类型
*
–
+ 优点:无序排列
+ 缺点:线程不安全
创建HashMap方法:
HashMap<string,double>map = new HashMap<string,double>();
添加元素
map.put("政治",90.0)
删除元素
map.remove("政治")
遍历HashMap
for(Map.Entry<string,double>entry:map.entrySet()){
sout("key:"+entry.getKey+",Value:"+entry.getValue);
}
</string,double></string,double></string,double>
Original: https://www.cnblogs.com/Lokemow/p/LokemowKai_JiHe.html
Author: Lokemow
Title: 集合自序整理集
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/591838/
转载文章受原作者版权保护。转载请注明原作者出处!