# neuedujava20190219 **Repository Path**: juejiangfeitie/neuedujava20190219 ## Basic Information - **Project Name**: neuedujava20190219 - **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 # neuedujava20190219 #### 介绍 集合工具类,输入输出流 #### 软件架构 软件架构说明 #### #### 集合工具类 1、集合类概念 集合:就是一类数据或对象的合集; 集合中存储的都是对象类型(都是Object及其子类); java中的常用集合类有: Collection接口实现: 又分为两个接口: List接口: 具体实现类: Set接口类: 具体实现类: Map接口实现: 具体实现类: 集合和数组的区别: 集合:长度是可以自动扩展的;(默认长度是16,容积率是0.75) 数组:长度是固定的; 2、集合类应用 2.1 java中集合类的应用: 学习集合类的应用主要从以下几个方面进行: 放入集合类的元素是否可以重复? 是否有序?(如果存入集合的元素顺序和取出集合元素的顺序一样,则称为有序) 是否可以为null? 是否排序?(放入集合中的元素,在取出时会按照某种排序要求进行了排序,则称为排序) 2.2 set接口的集合应用 set接口集合主要实现类: HashSet实现类: 采用的是Hash散列表存储算法; 采用Hash散列存储的集合,没有get方法; 需要通过迭代遍历的方式获取集合内部的元素对象; 集合特性: 是否可以重复? 不可以重复 是否有序? 无序 是否可以为null? 可以为null 是否排序? 不排序 LinkedHashSet实现类: 采用的是双向链表存储算法; 采用链表存储的集合,存入顺序和取出顺序一样; 需要通过迭代遍历的方式获取集合内部的元素对象; 集合特性: 是否可以重复? 不可以重复 是否有序? 有序 是否可以为null? 可以为null 是否排序? 不排序 TreeSet实现类: 采用的是红黑树(自平衡二叉树)存储算法; 采用红黑树(自平衡二叉树)存储的集合,取出顺序是按自然顺序进行排序的(中序遍历是有序的); 需要通过迭代遍历的方式获取集合内部的元素对象; 集合特性: 是否可以重复? 不可以重复 是否有序? 无序 是否可以为null? 不可以为null 是否排序? 排序 2.3 List接口的集合应用 List接口:存储的是一组有序序列的集合; 因为有序,可以有get方法获取指定下标的元素对象,类似于数组存取; ArrayList实现类: 采用的是数组实现存储; 采用数组存储的集合,可以按下标有序取出元素对象; 实现了迭代器Iterator接口; 集合特性: 是否可以重复? 可以重复 是否有序? 有序 是否可以为null? 可以为null 是否排序? 不排序 LinkedList实现类: 采用的是双向链表存储算法; 采用链表存储的集合,采用链表的方式进行遍历; 实现了迭代器Iterator接口; 集合特性: 是否可以重复? 可以重复 是否有序? 有序 是否可以为null? 可以为null 是否排序? 不排序 Vector 实现类: Vector是List实现类中的线程安全类; 总结: ArrayList和LinkedList集合特性一样,底层实现不一样; ArrayList底层是数组实现,具有数组的特性; LinkedList底层是链表实现,具有链表的特性; 区别: 数组实现: 赋值和读取元素的速度比较快; 删除和中间插入元素比较慢; 如果读取操作比较频繁,则优先使用数组实现的ArrayList; 链表实现: 赋值和读取元素速度比较慢; 删除和中间插入元素速度比较快; 如果增删操作比较频繁,优先使用链表实现的LinkedList; 2.4 Map接口的集合应用 Map接口中存储的元素是key-value键值对,是将键值对作为一个整体进行管理的: key-value键值对:key是键值对的名字,存取操作都是基于key进行的; value是键值对中的值,用于存储与key对应的信息内容; java中将key-value键值对使用Entry进行封装; 这样,也可以认为map中存储的是Entry的集合序列 key和value可以是任意对象类型;一般key使用String类型,value使用对象类型; HashMap实现类: 采用的是对key-value键值对中的key进行Hash散列存储算法; 采用key的Hash散列存储的集合,可以通过key使用get方法获取与key对应的value值; 集合特性: key是否可以重复? 不可以重复 key是否有序? 无序 key是否可以为null? 可以为null key是否排序? 不排序 LinkedHashMap实现类: 采用的是双向链表存储算法; 采用链表存储的集合,存入顺序和取出顺序一样; 集合特性: key是否可以重复? 不可以重复 key是否有序? 有序 key是否可以为null? 可以为null key是否排序? 不排序 TreeMap实现类: 采用的是红黑树(自平衡二叉树)存储算法; 采用红黑树(自平衡二叉树)存储的集合,取出顺序是按自然顺序进行排序的(中序遍历是有序的); 集合特性: key是否可以重复? 不可以重复 key是否有序? 无序 key是否可以为null? 不可以为null key是否排序? 排序 2.5 泛型的应用 在集合应用中,可以通过使用泛型,明确集合所存储的类型; 泛型指代符号:T E 在类、方法、变量定义时可以使用泛型进行定义,这样在定义时不需要指明具体的类型; 集合中的泛型默认类型是Object类型; 如果指定了具体的泛型,则使用具体的类型,如果没有指定则默认使用Object类型; 优点:可以避免进行强制类型转换; 可以限定一个集合中类型的范围; #### 使用说明 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/)