集合框架总结笔记一
按照上面的图一一介绍
关于集合的概述
集合是一个能够存储对象并且可变长度的容器。在Java中,就此需求提供了一套相当完整的容器类库,它们就是集合类。
集合类由于内部数据结构(存储对象的方式)不同,在Java中,将其分为了许多类与接口,它们各司其职。这些集合大体可以分为两类:单列集合与双列集合。单列集合顶层接口是Collection,它又有两个常用的子接口List和Set接口。双列集合的顶层接口是Map,它有两个常用的具体实现类HashMap和TreeMap。
集合中装的数据必须是Object
集合是一个容器,是用来装数据的,还可以操作数据。
使用集合的目的是为了对这些数据进行共同的操作或管理
关于Collection集合
Collection是单列集合,上图中的虚线框住的都是接口,而实线框住的都是实现类;Collection下面有两个子接口分别是list和set接口;
Collection——对象之间没有指定的顺序,允许重复元素;
方法功能 |
方法 |
功能描述 |
添加元素 |
add(Object) |
添加一个元素 |
|
addAll(Collection) |
添加一个Collection集合,将这个集合中的所有元素都添加进来 |
删除元素 |
clear() |
删除该集合中的所有元素 |
|
remove(Object) |
删除该集合中指定的元素 |
|
removeAll(Collection) |
删除指定集合中的所有元素 |
判断元素 |
isEmpty() |
返回boolean,判断该集合是否为空 |
contains(Object) |
返回boolean,判断该集合中是否包含某个元素 |
|
containsAll(Collection) |
返回boolean,判断该集合中是否包含直接集合中的所有元素 |
|
取出元素 |
iterator() |
返回在该集合的元素上进行迭代的迭代器(Iterator),用于遍历该集合所有元素 |
其他功能 |
size() |
返回int值,获取该集合元素个数 |
toArray() |
返回包含此 collection 中所有元素的数组 |
Set——对象之间没有指定的顺序,不允许重复元素;无序(存入和取出顺序有可能不一致),不可以存储重复元素。必须保证元素唯一性。
List——对象之间有指定的顺序,允许重复元素;有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。
关于List子接口
List本身是Collection接口的子接口,具备了Collection的所有方法。现在学习List体系特有的共性方法,查阅方法发现List的特有方法都有索引,这是该集合最大的特点。
List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。
|--ArrayList:在ArrayList内部维护了一个数组(可自动扩容),也使得它在随机查询元素的速度很快,而在指定位置插入和删除元素的速度稍慢。因为数组中都是有数字索引与元素一一对应的,根据每个元素的数字索引就可以很快的获得对应位置上的元素,而在指定的索引位置插入元素后,会将此索引位置之后的所有元素相应的向后移动一位。删除会同时向前移动一位。这样就导致了在指定位置插入和删除元素的速度稍慢。正如前边提到的,在ArrayList提供了 ,线程不同步。
|--LinkedList:底层的数据结构是双向链表结构,线程不同步,增删元素的速度非常快。
|--Vector:底层的数据结构就是数组,线程同步的,Vector无论查询和增删都巨慢。
关于Set子接口
Set集合与之前介绍的List集合一样,也是单列集合的一个重要分支。Set接口是一个不包含重复元素并且无序(存储和取出的顺序)的Collection。
Set接口中并没有额外增加方法(它的所有方法都是从Collection接口继承而来),Set接口也有两个常用实现类:HashSet和TreeSet。
|--HashSet:底层数据结构是哈希表,线程是不同步的。无序,高效;
HashSet集合保证元素唯一性:通过元素的hashCode方法,和equals方法完成的。
当元素的hashCode值相同时,才继续判断元素的equals是否为true。
如果为true,那么视为相同元素,不存。如果为false,那么存储。
如果hashCode值不同,那么不判断equals,从而提高对象比较的速度。
|--LinkedHashSet:有序,hashset的子类。
|--TreeSet:TreeSet是一个内部为二叉树结构的Set接口实现类。当元素存入TreeSet时,会按照自然顺序进行排序。线程不同步。
对于ArrayList集合,判断元素是否存在,或者删元素底层依据都是equals方法。
对于HashSet集合,判断元素是否存在,或者删除元素,底层依据的是hashCode方法和equals方法。
Map集合:
|--Hashtable:底层是哈希表数据结构,是线程同步的。不可以存储null键,null值。
|--HashMap:底层是哈希表数据结构,是线程不同步的。可以存储null键,null值。替代了Hashtable。存取速度快,通过HashSet中的算法保证键的唯一性。
|--TreeMap:底层是二叉树结构,可以对map集合中的键进行指定顺序的排序。
Map集合存储和Collection有着很大不同:
Collection一次存一个元素;Map一次存一对元素。
Collection是单列集合;Map是双列集合。
Map中的存储的一对元素:一个是键,一个是值,键与值之间有对应(映射)关系。
特点:要保证map集合中键的唯一性。
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 5. Nginx 负载均衡配置案例(附有详细截图说明++)