# java20190219 **Repository Path**: lifeibiao-001/java20190219 ## Basic Information - **Project Name**: java20190219 - **Description**: 集合 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-02-19 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # java20190219 #### 介绍 集合 #### 软件架构 软件架构说明 #### 学习内容 1. 集合类概念 集合:就是一类对象或数据的合集; Java常用集合类有: Collection接口实现: 分为两个子接口: List接口: 具体实现类: Set接口: 具体实现类: Map接口实现: 具体实现类: 集合和数组的区别: 集合:长度是可以自动扩展的; 数组:长度是固定的; 2. 集合类应用 Java中集合类的应用: 学习集合类主要从一下几个方面进行: 1、放入集合类中是否可以重复 2、是否有序?(如果存入集合的元素顺序和取出集合元素的顺序一样,称为有序) 3、是否为null 4、是否排序(放入集合中的元素,在取出时会按照某种排序要求进行了排序,则称为排序) 一、set接口的集合应用 set接口集合主要实现类: 1、HashSet实现类: 采用的是Hash散列存储算法 采用Hash散列存储集合,没有get方法 需要通过迭代遍历的方式获取集合内部的元素对象; 是否可以重复? 不可以重复 是否有序? 无序 否可以为null?可以为null 是否排序? 不排序 2、LinkedHashSet实现类: 采用的是双向链表存储算法 采用链表存储集合,存入顺序与取出顺序一致 需要通过迭代遍历的方式获取集合内部的元素对象; 是否可以重复? 不可以重复 是否有序? 有序 否可以为null?可以为null 是否排序? 不排序 3、TreeSet实现类: 采用的是红黑树(自平衡二叉树)存储算法; 采用红黑树(自平衡二叉树)存储的集合,取出顺序是按自然顺序进行排序的(中序遍历是有序的); 需要通过迭代遍历的方式获取集合内部的元素对象; 是否可以重复? 不可以重复 是否有序? 无序 是否可以为null?不可以为null 是否排序? 排序 二、List接口的集合应用 List接口:存储的是一组有序序列的集合。 因为有序,可以有get方法获取指定下标的元素对象。类似于数组存取; List接口集合主要实现类: 1、ArrayList实现类: 采用的是数组实现存储; 采用数组存储的集合,可以按下标有序取出元素对象; 实现了迭代器Iterator接口; 集合特性: 是否可以重复? 可以重复 是否有序? 有序 是否可以为null?可以为null 是否排序? 不排序 2、LinkedList实现类: 采用的是双向链表实现存储; 采用链表存储的集合,采用链表的方式进行遍历; 实现了迭代器Iterator接口; 集合特性: 是否可以重复? 可以重复 是否有序? 有序 是否可以为null?可以为null 是否排序? 不排序 3、Vector实现类: Vector是List实现类中的线程安全类; 4、总结: ArrayList和LinkedList集合特性一样,底层实现不一样; ArrayList底层是数组实现,具有数组的特性; LinkedList底层是链表实现,具有链表的特性; 区别: 数组实现: 赋值和读取元素的速度比较快; 删除和中间插入元素的速度比较慢; 如果读取操作比较频繁,则优先使用数组实现的ArrayList; 链表实现: 赋值和读取元素速度表较慢; 删除和中间插入元素速度比较快; 如果增删操作比较频繁,优先使用链表实现的LinkedList; 三、Map接口的集合应用 Map接口中存储的元素是key-value键值对,是将键值对作为一个整体进行管理的; key-value键值对:key是键值对的名字,存取操作都是基于key进行的; value是键值对中的值,用于存储与key对应的信息内容; java中将key-value键值对使用Entry进行封装; 这样,也可以认为map中存储的是Entry的集合序列; key和value可以是任意对象类型;一般key使用String类型,value使用对象类型; 1、HashMap实现类: 采用的是对key-value键值对中的Key进行Hash散列存储算法; 采用key的Hash散列存储的集合,可以通过key使用get方法获取与key对象的value值; 集合特性: key是否可以重复? 不可以重复 key是否有序? 无序 key是否可以为null?可以为null key是否排序? 不排序 四、泛型的应用 在集合应用中,可以通过使用泛型,明确集合所存储的类型; 泛型指代符号:T E 在类、方法、遍历定义时可以使用泛型进行定义,这样在定义时不需要指明具体的类型; 集合中的泛型默认类型是Object类型; 如果指定了具体的泛型,则使用具体的类型,如果没有指定则默认使用Object类型; 优点:可以避免进行强制类型转换; 可以限定一个集合中类型的范围; 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)