Java集合框架 -- 00 集合框架概述

2017-08-21  本文已影响17人  ql2012jz

自己总结的Java框架,其中标红显示的是很重要成用的实现类


Java集合工具类,可以实现常见的数据结构,如栈、队等

Java集合大致分为:
Collection
- List(绳子)——有序、可重复

LinkedList(链表实现)
ArrayList(数组实现)

- Set(瓶子)——无序、不可重复

HashSet
LinkedHashSet
TreeSet
EnumSet

- Queue(队列集合)

ArrayDeque

Map(键值对)——无序不可重复

HashMap
TreeMap

注: 
    Iterator 是 Collection 接口的父接口
    Iterator也是Java集合框架的成员,但它的设计不是用来盛装数据的,而是用来遍历(迭代访问)Collection的元素。(只能遍历Collection集合吗?对)
    注意:
    1.Iterator的对象是需要依赖集合的存在才会有意义
    2.定义的4个常用的方法:
      boolean hasNext(); //若果没有遍历完就返回true
      Object next(); //返回集合里的下一个元素,注意类型,实际中可能需要类型转换
      void remove(); //删除集合里上一次next方法返回的元素,只是副本,并非真正删除集合中的元素
      void forEachRemaining(Consumer action); //Java8新增的默认方法。
    3.在Iterator迭代访问Collection集合时,Collection的集合不能被外界操作改变(如增、删操作),否则会引发 java.util.ConcurrentModificationException 的异常。但可以被该迭代器操作(如删除)。事实上,在ListIterator迭代器中,可以利用该迭代器对集合进行增、删操作,只是外界不能操作该集合而已
    4.Iterator集合采用的快速失败的机制(fail-fast),即一旦在迭代过程中检测到该集合已经被修改(通常是程序中其他线程),程序就会立马引发ConcurrentModificationException异常。而不是显示修改后的异常,这可以避免共享资源而引发的潜在问题
    5.迭代器作为Collection集合的父接口,因此,在Collection集合的实现类中必须要实现Iterator这一接口,那么具体是怎么实现的呢?是在这些子类中以内部类的方式来实现Iterator接口,
    例如ArrayList集合的源码:
    public ArrayList {
        ...
        public Iterator<E> iterator() {
            return new Itr();
        }
        //内部类
        private class Itr implements Iterator<E> {
            ...
        }
        ...
    }
数组与集合的区别?
数组
-长度不可变
-无法保存具有映射关系的数据
-数组元素可以是基本类型,也可以是对象(实际是对象的引用)
集合
-长度可变
-可以保存具有映射关系的数据
-数据元素只能保存对象(实际是对象的引用)?那保存基本类型时会自动自动装箱成相应的包装类
上一篇 下一篇

猜你喜欢

热点阅读