Java集合,总体框架及主要接口,抽象类分析
2018-02-27 00:00
831 查看
概述
集合类作为主要的工具类,主要用于存储对象,常用的数据结构如 栈,队列,列表等。Java集合主要分为Set, List ,Queue ,Map 四种体系。Set:代表无序,不可重复的集合
List:代表有序,重复的集合
Map:代表的是映射关系的集合,存放的是k-v 的对象
Queue:代表的是队列的实现
Java集合可以理解为一种容器,可以把多个对象放入容器中。 集合类主要负责保存数据。所有的集合类都位于java.util包下,集合类中只能保存对象(其实存放的也是对象的引用,但是习惯上称为保存对象)
总体框架
从上面的图中可以看出,集合类主要有两个接口来派生,一个是Collection接口,一个Map接口。由这两个接口的子接口或者实现类组成了Java的集合框架体系。
Collection
Collection是Queue,List,Set的根类 ,是一个高度抽象出来的接口,包含了集合的基本操作和属性。
Collection接口中定义了如下操作集合的方法:
boolean add(E e) //向集合中添加元素 boolean addAll(Collection<? extends E> c) //把集合c中的所有元素添加到指定的集合里 void clear() //清除集合中的元素,长度变为0 boolean containsAll(Collection<?> c) //返回集合中是否包含集合c中的所有元素 boolean isEmpty() //集合是否为空 Iterator<E> iterator() //返回一个Iterator对象,用于遍历集合中的元素 boolean remove(Object o) //删除集合中指定的对象 boolean removeAll(Collection<?> c) //删除所有包含集合c中的所有对象 boolean retainAll(Collection<?> c) //删除集合c中不包含的对象 int size() //返回集合里元素的个数 Object[] toArray() //把集合转化为一个数组 <T> T[] toArray(T[] a) //把集合转化为一个指定类型的数组,推荐使用此种方式
List
定义public interface List<E>extends Collection<E> {}
List继承于Collection接口,是一个有序的集合,集合中的每个元素都对应一个下标或者称之为索引,允许有重复的元素存在。可以使用Collection 的全部方法,添加了一些根据索引来操作的方法。
API
void add(int index, E element) boolean addAll(int index, Collection<? extends E> c) ListIterator<E> listIterator(int index) E remove(int index) E set(int index, E element) int size() List<E> subList(int fromIndex, int toIndex)
Set
定义public interface Set<E> extends Collection<E> {}
Set继承于Collection接口,Set中集合元素是无序的不允许重复,它类似于一个罐子,可以可以依次把多个对象放入Set集合中,Set集合记不住元素的放入顺序。与Collection基本相同,没有提供额外的方法。常用的实现类有,HashSet ,TreeSet ,EnumSet等。
API
// Set的API abstract boolean add(E object) abstract boolean addAll(Collection<? extends E> collection) abstract void clear() abstract boolean contains(Object object) abstract boolean containsAll(Collection<?> collection) abstract boolean equals(Object object) abstract int hashCode() abstract boolean isEmpty() abstract Iterator<E> iterator() abstract boolean remove(Object object) abstract boolean removeAll(Collection<?> collection) abstract boolean retainAll(Collection<?> collection) abstract int size() abstract <T> T[] toArray(T[] array) abstract Object[] toArray()
Queue
定义public interface Queue<E> extends Collection<E> {}
Queue继承于Collection接口,Queue是用于模拟队列这种数据结构,队列通常是先进先出的容器,队列的头部,保存在队列中存放时间最长的元素,队列的尾部,保存队列中存放时间最短的元素。新元素放在队列的尾部,访问元素操作会返回队列的头部元素。
API
add(E e) E element() E peek() //获取队列的元素但不删除该元素 E poll() //获取队列头部的元素,删除该元素 E remove() //获取队列头部的元素删除该元素
Map
定义public interface Map<K,V> {}
Map用于保存具有映射关系的数据,存储的是key-value 对的形式。Map中的Key不允许重复,key和value之间存在单向一对一关系。
API
void clear() //删除Map对象中的所有 key-value对 boolean containsKey(Object key) //查询Map中是否包含一个或多个value boolean containsValue(Object value) //返回Map中是否包含指定的key Set<Map.Entry<K,V>> entrySet() //返回Map中包含的key-value对所组成的Set集合 V get(Object key) //返回指定key对应的value boolean isEmpty() //是否为空 Set<K> keySet() //返回key组成的set集合 V put(K key, V value) //添加一个key-value对 void putAll(Map<? extends K,? extends V> m) //将指定map中的key-value复制到当前map中 V remove(Object key) //根据key删除 int size() //map中存放的元素数量 Collection<V> values() //返回map中由value组成的集合
AbstractCollection
定义public abstract class AbstractCollection<E> implements Collection<E> {}
AbstractCollection实现了Collection集合,是一个抽象类。
API
AbstractList
定义public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {}
API
AbstractSet
定义public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E> {}
API
AbstractQueue
定义public abstract class AbstractQueue<E> extends AbstractCollection<E> implements Queue<E> {}
API
AbstractMap
定义public abstract class AbstractMap<K,V> implements Map<K,V> {}
API
SortedMap
定义public interface SortedMap<K,V> extends Map<K,V> {}
SortedMap是一个继承于Map接口的接口。它是一个有序的SortedMap键值映射。它的实现类为TreeMap ,TreeMap就是一个红黑树数据结构,每个key-value对即作为红黑树的一个节点,TreeMap有两种排序方式:
- 自然排序,TreeMap的所有key必须实现Comparable接口,而且所有的key应该是同一个类的对象
- 定制排序:创建TreeMap时,传入一个Comparable对象,该对象负责对TreeMap中所有的Key进行排序。
API
相关文章推荐
- Java中集合框架,Collection接口、Set接口、List接口、Map接口,已经常用的它们的实现类,简单的JDK源码分析底层实现
- Java中集合框架,Collection接口、Set接口、List接口、Map接口,已经常用的它们的实现类,简单的JDK源码分析底层实现
- Java第四周常用类与集合框架上机实验一接口+抽象类
- java_集合体系之Map框架相关抽象类接口详解、源码——08
- java_集合体系之Map框架相关抽象类接口详解、源码
- java_集合体系之Collection框架相关抽象类接口详解、源码——02
- Java第四周常用类与集合框架之接口+抽象类9-9
- 从零开始学Java自己利用接口和集合框架做的简单图书管理系统
- 黑马程序员--Java基础学习笔记之抽象类和接口、内存结构分析、Java APIs
- Java 集合总体框架
- Java集合系列-总体框架
- Java 集合系列01之 总体框架
- Java回顾:用一个Demo来说明继承抽象类和实现接口的简单框架模型
- Java集合源码解读(一):集合总体框架
- 集合框架源码分析一(接口篇)
- Java基础---集合框架二(ArrayList & 接口)
- java核心之集合框架——ArrayList源码分析
- java核心之集合框架——HashMap源码分析
- java中的集合框架Collection 接口 Map接口的问题
- Java基础----Java---集合框架---泛型、泛型方法、静态方法泛型、泛型接口、泛型限定、泛型类