• Java集合包(一)——java.util.* 总述


     

     转载请注明原文地址: https://www.cnblogs.com/ygj0930/p/13556297.html

    一:宏观框架

      

      Java集合包,位于java.util.*下,主要包括4大部分:Collection集合接口及其实现类、Map映射接口及其实现类、集合迭代接口及其实现类、集合常用操作封装工具类。

      注意:Java集合包中目前保留常用的类都是“非线程安全”的,只适用于单线程。其中遗留的几个线程安全的类实现都已过时,不再推荐使用,而是使用JUC包下对应的集合类。

    二:Collection集合接口及其实现类

      Collection集合包含 List和Set两大分支。

      1、List是一个有序序列,每一个元素都有它的唯一索引,第一个元素的索引下标是0。

      List的实现类主要有: LinkedList, ArrayList, Vector, Stack。

      (01) LinkedList是链表实现的;它不是线程安全的,只适用于单线程。
      (02) ArrayList是数组实现的,它是一个动态数组;它也不是线程安全的,只适用于单线程。

      以下两个已过时:
      (03) Vector是数组实现的矢量队列,它也一个动态数组;不过和ArrayList不同的是,Vector是线程安全的,它支持并发。但是不推荐使用,而是使用ArrayList对应高并发类 CopyOnWriteArrayList
      (04) Stack是Vector实现的栈;和Vector一样,它也是线程安全的。但是不推荐使用,而是使用LinkedBlockingDeque。

      2、Set是一个不允许有重复元素的集合。
              Set的实现类有HastSet和TreeSet。

      (01) HashSet是一个没有重复元素的集合,它底层通过HashMap实现的;HashSet不是线程安全的,只适用于单线程。
      (02) TreeSet也是一个没有重复元素的集合,不过和HashSet不同的是,TreeSet中的元素是有序的;它是通过TreeMap实现的;TreeSet也不是线程安全的,只适用于单线程。

     

    三:Map映射接口及其实现类

      Map是一个映射接口,即key-value键值对。Map中的每一个元素都包含了“一个key”和“key对应的value”,以及key的hash值等其他内容。

      Map的实现类主要有: HashMap,TreeMap、WeakHashMap, Hashtable。

      (01) HashMap是存储“键-值对”的哈希表;它不是线程安全的,只适用于单线程。
      (02) TreeMap也是哈希表,不过TreeMap中的“键-值对”是有序的,它是通过R-B Tree(红黑树)实现的;TreeMap不是线程安全的,只适用于单线程。

      (03) WeakHashMap是也是哈希表;和HashMap不同的是,HashMap的“键”是强引用类型,而WeakHashMap的“键”是弱引用类型,也就是说当WeakHashMap 中的某个值引用不再正常使用时[变成弱引用],则键值对会被从WeakHashMap中被自动移除,值引用指向的对象也会被回收。WeakHashMap也不是线程安全的,只适用于单线程。

      以下Map已过时:

      (04) HashTable也是哈希表;和HashMap不同的是,HashTable是线程安全的,支持并发。但是不推荐使用,而是使用ConcurrentHashMap

    四:集合迭代接口及其实现类

      集合迭代有两种方式:Iterator和Enumeration,其中Enumeration已过时。

      1、Enumeration

      Enumeration只能在Hashtable, Vector, Stack中使用,功能要比Iterator少,已过时。

    package java.util;
    
    public interface Enumeration<E> {
    
        boolean hasMoreElements();
    
        E nextElement();
    }

      2、Iterator 

      支持fail-fast机制:当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast异常。

    package java.util;
    
    public interface Iterator<E> {
        boolean hasNext();
    
        E next();
    
        void remove();
    }

      Iterator 比  Enumeration 的遍历速度稍慢一些,因为Iterator添加了对fail-fast机制的支持,所以慢一些。

    五:集合常用操作封装工具类

      1、Arrays

      针对最常用的数组操作提供方法封装支持。

      2、Collections

      包含各种有关集合操作的静态方法。

  • 相关阅读:
    [记录]Python2.7使用argparse模块
    [记录]MySQL读写分离(Atlas和MySQL-proxy)
    [记录]Shell中的getopts和getopt用法
    [记录]CentOS搭建SVN服务器(主从同步)
    [记录]Zabbix3.4配置监控Oracle12c的存活状态和表空间使用率
    [记录]一则清理MySQL大表以释放磁盘空间的案例
    [原创]Oracle 12c的备份和恢复策略
    Linux awk用法
    Oracle数据库学习笔记
    oracle无法删除当前连接用户方法
  • 原文地址:https://www.cnblogs.com/ygj0930/p/13556297.html
Copyright © 2020-2023  润新知