Java集合类概述
2016-08-01 00:00
726 查看
Java集合类概述
本文主要简要梳理常用java集合类,自己在日常编程中用的比较多,加深理解,他们所属包:java.utilList
Map
Set
List
首先要明确,List是接口,该接口继承了Collection接口,这个可以通过查阅java API文档。 —— [ java API ]代码举例说明,请进入Java集合类之List性能比较
List接口三大常用实现类:ArrayList、LinkedList、Vector
结构比较:
实现类 | 数据结构 | 同步状态 |
---|---|---|
ArrayList | 动态数组 | 不同步 |
LinkedList | 链表 | 不同步 |
Vector | 动态数组 | 同步 |
实现类 | 增 | 删 | 查 |
---|---|---|---|
ArrayList | 开销大 | 开销大 | 相对快 |
LinkedList | 开销小 | 开销小 | - |
Vector | 开销大 | 开销大 | - |
ArrayList
基本方法:add, remove, get, set, size, contains
注意要点:indexOf(返回第一个对象下标),lastIndexOf(返回最后一个对象小标);如需要同步,需要自行添加同步处理。
优势所在:遍历和随机查找速度快。
LinkedList
基本方法:add, remove, get, set, size, contains
注意要点:高效操作对象方法addFirst,addLast,getFirst,getLast;如需要同步,需要自行添加同步处理。
优势所在:新增删除速度快。
Vector
基本方法:add, remove, get, set, size, contains
注意要点:提供同步功能。
Map
首先要明确,Map是接口,用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。这个可以通过查阅java API文档。 —— [ java API ]代码举例说明,请进入Java集合类之Map
Map接口两大常用实现类:HashMap、TreeMap
结构比较:
实现类 | 数据结构 | 优势 |
---|---|---|
HashMap | 散列表 | 插删快 |
TreeMap | 红黑树 | 内部排序 |
HashMap里面存入的键值对在取出的时候是随机的,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap是最好的选择。
TreeMap取出来的是排序后的键值对。插入、删除需要维护平衡会牺牲一些效率。但如果要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。
Set
首先要明确,Set是接口,该接口继承了Collection接口。相对于上面两种类型集合类,Set不保存重复元素。这个可以通过查阅java API文档。 —— [ java API ]代码举例说明,请进入Java集合类之Set
Set接口两大常用实现类:HashSet、TreeSet、LinkedHashSet
补充说明:
HashSet使用的是复杂的哈希码来管理元素,使用HashSet能够最快的获取集合中的元素,效率非常高(以空间换时间)。会根据hashcode和equals来判断是否是同一个对象,如果hashcode一样,并且equals返回true,则是同一个对象,不能重复存放。
TreeSet也不能存放重复对象,但是TreeSet会自动排序,如果存放的对象不能排序则会报错,所以存放的对象必须指定排序规则。排序规则包括自然排序和客户排序。
自然排序:TreeSet要添加哪个对象就在哪个对象类上面实现java.lang.Comparable接口,并且重写comparaTo()方法,返回0则表示是同一个对象,否则为不同对象。
客户排序:建立一个第三方类并实现java.util.Comparator接口。并重写方法。定义集合形式为TreeSet ts = new TreeSet(new 第三方类())。
LinkedHashSet按照插入顺序保存对象,同时还保存了HashSet的查询速度。
相关文章推荐
- Java集合类(十三)JUC中的集合概述
- 疯狂java学习笔记1025---java集合类概述
- Java集合类概述《三》
- Java集合类概述
- Java集合类概述
- Java集合类 —— 集合类概述
- Java集合类一概述
- Java集合类概述
- JAVA集合类概述
- GPS定位原理概述
- 软件测试概述
- webService学习2----webService概述
- 黑马程序员--java基础--概述及开发环境的建立
- 纸牌游戏之六 游戏概述
- 经济管理 第1章 经济与管理概述
- 【Linux device driver】设备驱动程序概述(一)
- java集合类(三)Arraylist实例
- 《计算机网络》 读书笔记(二) 协议概述及链路层描述
- 组播 可控组播 IGMP Proxy 的概述
- 1.osframe后台开源框架架构概述