您的位置:首页 > 编程语言 > Java开发

Java集合类概述

2016-08-01 00:00 726 查看

Java集合类概述

本文主要简要梳理常用java集合类,自己在日常编程中用的比较多,加深理解,他们所属包:java.util

List

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的查询速度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: