Java集合框架总结

时间:2023-02-17 16:22:23

一、Java集合框架简介及其关系图

  Java集合框架的作用:为了方便高效操作对象,将对象放入容器中,统一管理。数组也是一种简单的容器,集合框架的容器是比较复杂的容器。

其中包含的具体的集合类,对于特定类型的操作具有不同的效率,选择那个容器类型,要根据具体的操作选择。

注意:位于java.util包里面的接口类几乎都是非线程安全的,线程安全的集合位于java.util.concurrent包里面。

  Java集合框架中类的组织方式:总接口-->子接口-->抽象类-->具体集合类。在接口中定义行为,在具体的集合类中定义具体操作的实现。

  Java集合框架中常用的接口和具体的集合类:Collection接口----Set接口----List接口,Map接口;常用的具体类:ArrayList   LinkedList

TreeSet  HashSet  LinkedHashSet  TreeMap HashMap HashTable LinkedHashMap;以及用于遍历集合元素的接口Iterator;用于定义比较

的接口:Comparator和Comparable;以及便利的工具类:Collections和Arrays。

Java集合框架总结

 

二、Java集合框架中常用接口介绍

  1.Collecttion接口:定义了除了Map相关的集合的共性操作:另外其继承了Iterable接口,继承其方法:iterator()--Iterator<T>

  Collection接口常用方法:

  a. boolean add(E e):向集合中添加元素  boolean addAll(Collection<? extends E> c):向该集合中添加另一个集合中的所有元素

  b. void clear():清除该集合中的所有元素

  c. boolean contains(Object o):判断集合中是否包含指定对象  boolean containsAll(Collecttion<?> c):判断集合中是否包含另一个集合

  d. boolean equals(Object o):判断集合是否与指定集合相等  int hashCode():返回该集合的哈希值

  e. boolean isEmpty():判断集合是否为空  int size():返回集合中的元素个数

  f. Iterator <T> iterator():返回在该集合中元素进行迭代的迭代器

  g.boolean  remove(Object o):删除集合中指定的元素 boolean removeAll(Collection<?> c):删除该集合中和指定集合相同的元素

  h. boolean retainAll(Collection<?>):保留该集合和指定集合中相同的元素

  i. Object[] toArray():返回包含该集合所有元素的数组  T[] toArray(T[] t):将集合元素放入指定类型的数组,并返回该数组

  注意:判断包含是根据对象的内容判断的

1 //必须先调用next()在调用remove();因为指针在元素前面,删除的是指针位置前面的一个元素
2 Iterator<String> it = c.iterator();//迭代集合中的元素
3 while(it.hasNext()){
4 it.next();
5 it.remove();
6 }

  2.Iterator接口:定义迭代集合中元素的方法

  a. boolean hasNext():判断集合中是否还有元素

  b. E next():返回集合中的下一个元素

  c. boolean remove():删除迭代器上一个迭代的元素

  3.List接口:继承Collection接口序列,元素之间按照加入集合的次序存在先后的次序关系,操作类似于数组,但是长度可变

  允许添加相同内容的元素List中的方法增加了许多利用下标进行操作的方法

  a. boolean add(int index, E e):在指定的位置添加元素  boolean containsAll(int index, Collecttion<?> c):在指定的位置加入某集合的元素

  b. int indexOf(Object o):返回指定对象在序列中的下标  E get(int index):返回指定下标的元素 void set(int index, E e):设置指定的位置元素

  c.ListIterator listIterator():返回一个序列迭代器,序列迭代器运行在迭代的时候,进行添加元素,设置元素,同时运行向前向后遍历序列

  d.List<E> subList(int fromIndex, int toIndex):返回该序列的子序列--包含开始,不包含接收下标

  3.Set接口:继承Collection其含义类似数学的集合,集合中不允许存在相同的元素,打印集合的时候是按照随机的顺序打印。未定义新的方法。

  4.Map接口:存储的是一组键值对,Key-Value,注意key的内容不允许相同,每个Key只允许映射一个Value。Map常见的方法

  a. V put(K key, V value):将一组键值对存入Map里边,并返回原来该键对应的值

  b. Collection<V> values():将该映射关系所有的值放入集合并返回

  c. Set<K> keySet():将此映射关系的所有的值放入一个集合并返回

  d. Set<Map.Entry<k,v>> entrySet():返回包含该映射关系的集合

  e. boolean containsKey(Object key)/containsValue(Object value):判断包含特定键或值

三、集合框架中常用类的介绍

  1.ArrayList:是List接口的一种具体的实现,底层是用数组实现的,它和数组的最大的不同就是,数组的长度,会根据需要扩展,在将原来

数组的内容复制到拥有较大容量的新数组里面,通过这种方式实现动态数组概念。默认是10,每次扩大先按照1.5倍扩展。ArrayList的特点其实

和数组类似,支持随机访问,对于数据量大且要频繁进行添加和删除的操作,效果不是很好。

  ArrayList的常用方法:相对于List接口添加了许多根据下标进行的操作

  boolean add(int index , E e) boolean addAll(int index, Collection<? extends E> c)  E remove(int index) int indexOf(Object o)

  int lastIndexOf(Object o)  void removeRange(int fromIndex, int toIndex)  void set(int index, E e) E get(int index)

  2.LinkedList:是List接口的另一种实现,其底层是用双链表实现的,链表的特点:对于插入和删除操作很方便只需要修改几个指针的指向

对于查找的效率不是特别好。LinkedList的常用方法:主要特殊操作方式是针对头和尾巴的操作。其实现了List接口、Dequue接口、Queue接口。

  add(E e )  addFirst/Last() 以及针对下标的操作类似于ArrayList,getFirst/Last() removeFirst/Last() descendingIterator()--逆序迭代。

  3.HashSet:是Set接口的一种实现,其底层实现是链表数组实现的,根据对象的哈希值进行划分。

  4.TreeSet:是Set接口的一种实现,底层实现是用的红黑树,其最大的特点可以针对元素进行排序之类的操作。

  5.HashMap和TreeMap:散列映射对键进行散列,树映射利用键的整体顺序对元素进行排序,包含许多针对次序相关的操作。