java集合的基本概念:
常用的集合有两个大一点的接口:Colleciton 和 Map ,都属于 java.util.*
- Colleciton 下面有扩展了一些子接口,这些子接口都有一些特定的规则。
1.1) Set 保证数据不重复,无明显顺序,存储的数据不能有相同的
1.2) List 可以保证集合的顺序,可以理解为,实现List接口都是有序
1.3) Queue 队列保证先进先出顺序
2) Map 就是存储的键值对
主要区别:容器中存储的每个位置保存的数据不一样吧,Map是按照键值对进行存储的,Collection 只能保存一个元素或者对象
java集合的层次结构:
- Interface Iterable<T> ,迭代器接口,是Collection 的父接口,接口中只有一个方法 iterator() ,实现这个接口都相当于有foreach() 进行遍历了,这个就是为什么实现Collection 接口的集合对象 都有 foreach()遍历的特性
1.1 Collection 可以说是集合接口中最基本的,一个Collection 代表一组object的集合,这些object 称为 Collection 的元素,它是一个接口,提供规范,不能进行实例化.
1) Set 继承了 Collection ,Set集合主要的特点就是不重复,还有就是没有明显的顺序,可以理解成无序的,Set 判断 两个对象是否相等采用equals 方法,所以这样Set集合中的数据没有重复的。
1.1) HashSet
HashSet是Set接口的典型实现,HashSet使用HASH算法来存储集合中的元素,因此具有良好的存取和查找性能。当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据该hashCode值决定该对象在HashSet中的存储位置。 特别注意,HashSet集合判断两个元素相等的标准是两个对象通过equals()方法比较相等,并且两个对象的hashCode()方法的返回值相等。
1.1.1) LinkedHashSet
LinkedHashSet集合也是根据元素的hashCode值来决定元素的存储位置,但和HashSet不同的是,它同时使用链表维护元素的次序,这样使得元素看起来是以插入的顺序保存的。因此LiskedHashSet 是有顺序的。
1.2) SortedSet
SortedSet 此接口主要用于排序操作,即实现此接口的子类都属于排序的子类
1.2.1) TreeSet
TreeSet是SortedSet接口的实现类,TreeSet可以确保集合元素处于排序状态。
1.3) EnumSet
EnumSet是一个专门为枚举类设计的集合类,EnumSet中所有元素都必须是指定枚举类型的枚举值,该枚举类型在创建EnumSet时显式、或隐式地指定。EnumSet的集合元素也是有序的,它们以枚举值在Enum类内的定义顺序来决定集合元素的顺序。