Java集合类基本概念
Java中的集合框架大类可分为Collection
和Map
;两者的区别:
- Collection是单列集合;Map是双列集合
- Collection中只有Set系列要求元素唯一;Map中键需要唯一,值可以重复
- Collection的数据结构是针对元素的;Map的数据结构是针对键的。
Collection
Collection包括两大体系:
List
: 存取有序,有索引,可以根据索引来进行取值,元素可以重复Set
: 存取无序,元素不可以重复
List
包含有
ArrayList
:底层是数组实现,查询速度快,增删速度慢LinkedList
: 基于链表结构实现的,查询速度慢,增删速度快,提供了特殊的方法,对头尾的元素操作(进行增删查),线程不安全Vector
:数组结构,查询快,增删慢,线程安全,因此效率低(已过时)
Set
Set集合的特点:元素不重复,存取无序,无下标 Set集合下面有:
HashSet
: 存储无序,元素无索引,元素不可以重复.底层是哈希表.LinkedHashSet
: 基于链表和哈希表共同实现的,所以具有存取有序,元素唯一的特点TreeSet
:基于二叉树的数据结构,元素唯一,存取无序(可以在添加元素的时候进行排序)
Map
Map是一个双列集合,其中保存的是键值对,键要求保持唯一性,值可以重复,包含:
HashMap
LinkedHashMap
TreeMap
工具类Collections
Collections工具类提供了大量针对Collection/Map的操作
排序操作(主要针对List接口相关)
reverse(List list)
:反转指定List集合中元素的顺序shuffle(List list)
:对List中的元素进行随机排序(洗牌)sort(List list)
:对List里的元素根据自然升序排序sort(List list, Comparator c)
:自定义比较器进行排序swap(List list, int i, int j)
:将指定List集合中i处元素和j出元素进行交换rotate(List list, int distance)
:将所有元素向右移位指定长度,如果distance等于size那么结果不变
查找和替换(主要针对Collection接口相关)
binarySearch(List list, Object key)
:使用二分搜索法,以获得指定对象在List中的索引,前提是集合已经排序max(Collection col)
:返回最大元素max(Collection col, Comparator comp)
:根据自定义比较器,返回最大元素min(Collection col)
:返回最小元素min(Collection col, Comparator comp)
:根据自定义比较器,返回最小元素fill(List list, Object obj)
:使用指定对象填充frequency(Collection Object o)
:返回指定集合中指定对象出现的次数replaceAll(List list, Object old, Object new)
:替换
设置不可变集合
Collections有三类方法可返回一个不可变集合:
emptyXxx()
:返回一个空的不可变的集合对象singletonXxx()
:返回一个只包含指定对象的,不可变的集合对象。unmodifiableXxx()
:返回指定集合对象的不可变视图
其它
disjoint(Collection<?> c1, Collection<?> c2)
: 如果两个指定 collection 中没有相同的元素,则返回 true。addAll(Collection<? super T> c, T... a)
: 一种方便的方式,将所有指定元素添加到指定 collection 中Comparator<T> reverseOrder(Comparator<T> cmp)
: 返回一个比较器,它强行反转指定比较器的顺序。如果指定比较器为 null,则此方法等同于 reverseOrder()(换句话说,它返回一个比较器,该比较器将强行反转实现 Comparable 接口那些对象 collection 上的自然顺序)