zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    使用SQLCOMMAND以及SQLADAPERT 调用存储过程
    将表A的数据复制到表B,以及关于主表和子表的删除办法
    登录次数验证,可能还是有些不足的,希望大家指正
    MVC过滤器
    sql数据库delete删除后怎么恢复,这是网上找的答案。。希望大神验证指教一下
    淘宝前后端分离实践
    P1852 [国家集训队]跳跳棋
    P2154 [SDOI2009]虔诚的墓主人
    P4208 [JSOI2008]最小生成树计数
    P2467 [SDOI2010]地精部落
  • 原文地址:https://www.cnblogs.com/ygj0930/p/13556297.html
Copyright © 2011-2022 走看看