java 集合框架快速预览
2018-06-28 14:09
309 查看
集合 链表 队列 栈 数组 映射 java.util.*
Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)
Collection
List
Set
Queue
Map
Collection是一个接口,是高度抽象出来的集合,它包含了集合的基本操作和属性
Collection包含了List和Set两大分支
List是一个有序的队列,每一个元素都有它的索引。第一个元素的索引值是0
List的实现类有LinkedList, ArrayList, Vector, Stack
Set是一个不允许有重复元素的集合
Set的实现类有HastSet和TreeSet
HashSet依赖于HashMap,它实际上是通过HashMap实现的
TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的
Map是一个映射接口,即key-value键值对
AbstractMap是个抽象类,它实现了Map接口中的大部分API。而HashMap,TreeMap,WeakHashMap都是继承于AbstractMap
Hashtable虽然继承于Dictionary,但它实现了Map接口
terator 它是遍历集合的工具,即我们通常通过Iterator迭代器来遍历集合
我们说Collection依赖于Iterator,是因为Collection的实现类都要实现iterator()函数,返回一个Iterator对象
ListIterator是专门为遍历List而存在的
Enumeration
它是JDK 1.0引入的抽象类。作用和Iterator一样,也是遍历集合;但是Enumeration的功能要比Iterator少
AbstractCollection抽象类,它实现了Collection中的绝大部分函数,在Collection的实现类中,我们就可以通过继承AbstractCollection省去重复编码
AbstractList和AbstractSet都继承于AbstractCollection,具体的List实现类继承于AbstractList,而Set的实现类则继承于AbstractSet
里面的一些主要实现是基于iterator的,比如toArray()、remove()
注意点:add方法需要实现类自己具体去重写
Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)
Collection
public interface Collection<E> extends Iterable<E>
List
public interface List<E> extends Collection<E>
Set
public interface Set<E> extends Collection<E>
Queue
public interface Queue<E> extends Collection<E>
Map
public interface Map<K,V>
大致说明
看上面的框架图,先抓住它的主干,即Collection和MapCollection是一个接口,是高度抽象出来的集合,它包含了集合的基本操作和属性
Collection包含了List和Set两大分支
List是一个有序的队列,每一个元素都有它的索引。第一个元素的索引值是0
List的实现类有LinkedList, ArrayList, Vector, Stack
Set是一个不允许有重复元素的集合
Set的实现类有HastSet和TreeSet
HashSet依赖于HashMap,它实际上是通过HashMap实现的
TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的
Map是一个映射接口,即key-value键值对
AbstractMap是个抽象类,它实现了Map接口中的大部分API。而HashMap,TreeMap,WeakHashMap都是继承于AbstractMap
Hashtable虽然继承于Dictionary,但它实现了Map接口
terator 它是遍历集合的工具,即我们通常通过Iterator迭代器来遍历集合
我们说Collection依赖于Iterator,是因为Collection的实现类都要实现iterator()函数,返回一个Iterator对象
ListIterator是专门为遍历List而存在的
Enumeration
它是JDK 1.0引入的抽象类。作用和Iterator一样,也是遍历集合;但是Enumeration的功能要比Iterator少
Collection架构
AbstractCollection抽象类,它实现了Collection中的绝大部分函数,在Collection的实现类中,我们就可以通过继承AbstractCollection省去重复编码
AbstractList和AbstractSet都继承于AbstractCollection,具体的List实现类继承于AbstractList,而Set的实现类则继承于AbstractSet
Collection 介绍
下面是JDK1.8的实现,它是一个接口,是高度抽象出来的集合,它包含了集合的基本操作:添加、删除、清空、遍历(读取)、是否为空、获取大小、是否保护某元素等等public interface Collection<E> extends Iterable<E> { int size(); boolean isEmpty(); boolean contains(Object var1); Iterator<E> iterator(); Object[] toArray(); <T> T[] toArray(T[] var1); boolean add(E var1); boolean remove(Object var1); boolean containsAll(Collection<?> var1); boolean addAll(Collection<? extends E> var1); boolean removeAll(Collection<?> var1); default boolean removeIf(Predicate<? super E> var1) { Objects.requireNonNull(var1); boolean var2 = false; Iterator var3 = this.iterator(); while(var3.hasNext()) { if (var1.test(var3.next())) { var3.remove(); var2 = true; } } return var2; } boolean retainAll(Collection<?> var1); void clear(); boolean equals(Object var1); int hashCode(); default Spliterator<E> spliterator() { return Spliterators.spliterator(this, 0); } default Stream<E> stream() { return StreamSupport.stream(this.spliterator(), false); } default Stream<E> parallelStream() { return StreamSupport.stream(this.spliterator(), true); } }
List简介
public interface List<E> extends Collection<E>
AbstractCollection
实现了Collection 有两个方法 iterator和size没有实现public abstract Iterator<E> iterator(); public abstract int size();
里面的一些主要实现是基于iterator的,比如toArray()、remove()
public Object[] toArray() { // Estimate size of array; be prepared to see more or fewer elements Object[] r = new Object[size()]; Iterator<E> it = iterator(); for (int i = 0; i < r.length; i++) { if (! it.hasNext()) // fewer elements than expected return Arrays.copyOf(r, i); r[i] = it.next(); } return it.hasNext() ? finishToArray(r, it) : r; }
public boolean remove(Object o) { Iterator<E> it = iterator(); if (o==null) { while (it.hasNext()) { if (it.next()==null) { it.remove(); return true; } } } else { while (it.hasNext()) { if (o.equals(it.next())) { it.remove(); return true; } } } return false; }
注意点:add方法需要实现类自己具体去重写
/** * {@inheritDoc} * * <p>This implementation always throws an * <tt>UnsupportedOperationException</tt>. * * @throws UnsupportedOperationException {@inheritDoc} * @throws ClassCastException {@inheritDoc} * @throws NullPointerException {@inheritDoc} * @throws IllegalArgumentException {@inheritDoc} * @throws IllegalStateException {@inheritDoc} */ public boolean add(E e) { throw new UnsupportedOperationException(); }
相关文章推荐
- java框架快速预览
- 以简求快 Java快速开发框架LML总体架构预览
- java中常用的集合框架
- java第十三节-集合框架概况
- 使用Java实现面向对象编程--集合框架
- 灰太狼大王讲java之集合框架
- 黑马程序员——java基础——集合框架(二: 双列集合 (Map体系))
- 使用 Java 集合框架
- 20个最佳的Java集合框架面试题目
- java常用集合框架图
- JAVA基础--JAVA API集合框架(其他集合类,集合原理)
- JAVA基础--JAVA API集合框架(ArrayList、HashSet、HashMap使用)14
- Java学习札记——集合框架二 Map
- Java学习之集合框架(下)
- Java第四周常用类与集合框架上机实验四学会包装类常用方法使用
- Java核心技术点之集合框架
- Java复习七 集合框架
- 黑马程序员——Java基础---泛型、集合框架工具类:collections和Arrays
- java简单的集合框架(一)
- 黑马程序员 java基础集合框架之集合工具类Collections