![](https://img-blog.csdnimg.cn/3d4246b099e542f2b05b4a8a837dc28a.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java集合
文章平均质量分 66
介绍一些Java常用集合的使用以及底层实现,如ArrayList ...
Strive_MY
一枚小小的后端码农
展开
-
Collections工具类
Collections是一个操作Set、List和Map等集合的工具类。提供了一系列静态方法对集合元素进行排序、增删改查等操作。 测试用例 @SuppressWarnings("all") public class CollectionsTest { public static void main(String[] args) { List list = new ArrayList(); list.add("java"); list.add("c++"); list.ad原创 2021-12-10 22:59:41 · 570 阅读 · 0 评论 -
如何选择集合
在开发过程中,选择什么集合实现类,主要取决于业务特性,然后根据集合实现类的特性进行选择,以下是一些参考分析: 首先判断存储的数据类型(一组对象【单列】/ 一组键值对【双列】) 一组对象【单列】:Collection 允许重复:List 增删多: LinkedList [底层维护了一个双向链表] 改查多: ArrayList [底层维护了一个数组] 不允许重复: Set 无序: HashSet [底层是HashMap] 有序: TreeSet 插入和取出顺序一致: LinkedHashSet .原创 2021-12-10 22:58:29 · 465 阅读 · 0 评论 -
HashMap底层结构和源码分析
环境准备 Java8_221版本 Idea Debug配置 HashMap基本介绍 HashMap是【key-value】对的方式来存储数据的; key不能重复,但是值可以重复,允许使用null键和null值; 如果添加相同的key,则会覆盖原来的key-value,等同于修改(key不会替换,value会替换); 与HashSet一样,不保证映射的顺序,因为底层是以hash表的方式来存储的; HashMap没有实现同步,因此是线程不安全的; HashMap底层结构 扩容机制 HashMap底层原创 2021-12-10 21:39:39 · 458 阅读 · 0 评论 -
Map接口
基本介绍 Map用于保存具有映射关系的数据:Key-Value; Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中; Map中的key不允许重复; Map中的value可以重复; Map的key可以为null,value也可以为null,注意key为null,只能有一个,value为null,可以多个; 常用String类作为Map的Key; key和value之间存在单向一对一关系,即通过指定的key总能找到对应的value; 体系图 常用方法 V put原创 2021-11-21 22:17:13 · 303 阅读 · 0 评论 -
Set接口
基本介绍 Set接口是 Collection 接口的子接口 无序(添加和取出的顺序不一致),没有索引; 不允许重复元素,所以最多包含一个null; 常用方法 boolean add(E e); // 插入e元素 boolean contains(Object o); // 判断是否存在 Object[] toArray(); // 转成数组 boolean remove(Object o); // 移除指定元素 遍历 List set = new HashSet<>();原创 2021-11-16 15:44:07 · 66 阅读 · 0 评论 -
LinkedList底层结构和源码分析
环境准备 Java8_221版本 Idea Debug配置 LinkedList基本介绍 LinkedList底层实现了双向链表和双端队列特点; 可以添加任意元素(元素可以重复),包括null; 线程不安全,没有实现同步; LinkedList的底层操作机制 LinkedList底层维护了一个链表; LinkedList中维护了两个属性first和last,分别指向首节点与尾节点; 每个节点Node里面维护了prev、next、item三个属性,最终实现双向链表; prev: 指向前一个节点;原创 2021-11-15 16:53:38 · 458 阅读 · 0 评论 -
Vector底层结构和源码分析
环境准备 Java8_221版本 Idea Debug配置 Vector基本介绍 继承AbstractList,实现List等; 底层也是一个对象数组; 是线程同步的,即线程安全,Vector类的操作方法带有synchronized; 开发过程中,需要线程同步安全的集合时,可以考虑使用Vector; Vector和ArrayList比较 底层结构 版本 线程安全 效率 扩容倍数 ArrayList 可变数组 jdk1.2 不安全 高 如果有参构造 1.5倍;如果是无参:1.第一次1原创 2021-11-13 21:50:22 · 806 阅读 · 0 评论 -
ArrayList底层结构和源码分析
注意事项 ArrayList基本了解: ArrayList可以加入null,并且多个; ArrayList是由数组来实现的; ArrayList基本等同于Vector,除了ArrayList是线程不安全(执行效率高),在多线程情况下,不建议使用ArrrayList; Idea Debug设置 Java -version 1.8.0_221 底层操作机制 ArrayList中维护了一个Object类型的elementData数组。 transient Object[] elementData;原创 2021-11-13 14:15:17 · 229 阅读 · 0 评论 -
List接口
基本介绍 List接口是 Collection 接口的子接口 List集合类中元素有序(即添加顺序和取出顺序一致)、且可重复。 List集合中的每个元素都有其对应的顺序索引,即支持索引。 List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。 List接口常用的实现类有:ArrayList、LinkedList和Vector。 常用方法 boolean add(E e); // 在index位置插入e元素 boolean addAll(Collection原创 2021-10-31 20:19:24 · 114 阅读 · 0 评论 -
Java集合概览
数组和集合区别 数组 长度开始时必须指定,而且一旦指定,不能修改; 保存的必须为同一类型的元素; 使用数组进行增加/删除元素比较麻烦; 集合 可以动态保存任意多个对象,使用比较方便; 提供了一系列方便操作对象的方法: add、remove、set、get; 使用集合添加,删除新元素的代码简洁明了; 集合的框架体系 Collection体系图 Map体系图 Collection package java.util; public interface Collection<E> exte原创 2021-10-31 19:43:05 · 157 阅读 · 0 评论