闲谈JAVA集合

说到java集合大家想到的大部分都是List,Map,Set,这些都是我们在项目中经常用到的,都是除了这几种其实还有很多,那就由我来整理一下吧

1.JAVA集合思维导图,用图片形象概括了java集合类的关系

闲谈JAVA集合
2.由图片可知JAVA集合大致分为Collection,List,Set,Queue,Iterable,Map,Arrays等集合接口,现在由我来详细讲解

List
Llist接口继承Collection接口是Conllection的一个子类,List类特点是可以有重复的元素,而且还有顺序,List类下还有二个子类分别是ArrayList和LinkedList,项目中大部分都是用ArraysList来放查询出的数据,因为ArrayList(数据结构)查询速度快,都是增删改的速度慢,所用就有了LinkedList,LinkedList查询速度没有ArrayList快但是增删改的速度快,所用在用增删改是最好用LinkedList(链表结构)

Set

Set接口继承Collection接口是Collection的一个子类,Set这个集合跟List集合相反
特点是不能有重复元素,而且有顺序
,Set集合下还有HashSet,TreeSet,LinkedHashSet三个子类,Set集合主要是在数据不可重复是使用,比如:我们在做项目时的树形菜单,配置一对多关系时用Set集合,在数据查询时就把数据重复给排除了HashSet在三个子类中效率最高,增删查改速度快,注意点:HashSet值可以为null,但是不能重复
TreeSet时按照比较结果升序保存结果对象,
LinkedHashSet是按照被添加的顺序保存对象

Set集合使用场合
需要速度快的集合,使用HashSet
需要集合有排序功能,使用TreeSet
需要按插入顺序存储集合,使用LinkedHashSet

Collection与Iterable

Collection:是一个合集,List,Set,Queue都继承与Collection接口,Collection又继承与Iterable接口
Collection方法列表:
size() :返回集合中的项数
isEmpty() :判读集合是否为空
contains(Object) :判断集合是否包含某项
clear() :清除
add() :从集合中添加某项
remove(Object) :从集合中删除某项
iterator() :遍历集合

Iterable:实现Iterable接口可以增强foreach循环,所用使用foreach循环时可以使用Iterable()方法

Iterable()方法

hashNext() :是否存在下一项
next() :获取下一项
remove() :要配合next()使用,next()方法调用一项删除一项

Map

Map接口是一个独立的接口,他不继承任何一个接口,Map接口由三个子类:HashMap,TreeMap,LinkedHashMap,优点跟Set集合差不多,可以参考Set集合,Map是用键值对存储,键必须是唯一的,但是值可以重复,是一个无需容器,Map键可以为null但是只能有一个null,值可以有多个null

Arrays和ArrayList的区别

1.首先Arrays是一个数组,ArrayList是一个集合
2.ArrayList是Array的复杂版
3.Arrays只能存储相同数据类型的数间,ArrayList可以存储不同数据类型的数据
4.Arrays是长度是固定的,ArrayList长度是可变的