• Java集合—集合框架


    前言

    在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结构和操作(算法)统称为Java集合框架(JavaCollectionFramework)。

    Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创建出来一些对象,然后直接应用就可以了,这样就大大提高了编程效率。

     

    Java集合和数组的区别

    1. 数组的长度固定,集合长度可变,并且集合可以保存具有映射关系的数据(即关联数组,键值对 key-value)。
    2. 数组元素即可以是基本类型的值,也可以是对象。集合里只能保存对象(实际上只是保存对象的引用变量),基本数据类型的变量要转换成对应的包装类才能放入集合类中。
     

    Java集合框架的体系结构

    Java中所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:CollectionMap,Collection和Map是Java集合框架的根接口。

    体系结构图(虚线为接口):

    图中,ArrayList,HashSet,LinkedList,TreeSet是我们经常会有用到的已实现的集合类。

    图中,HashMap,TreeMap是我们经常会用到的集合类。

    体系结构简介:

    • Collection:存储单个数据或者对象。
      • |-List:有序、重复的集合
        • |-LinkedList :基于链表的List
        • |-ArrayList :基于数组的List
        • |-SubList:一个List的视图
        • |-Vector:一个线程安全的List
          •   |-Stack:
      • |-Queue:队列 ,通常作为数据存储结构,不作为操作容器。集合框架中应用比较少,主要在在并发包(java.util.concurrent)中实现的阻塞队列(消息队列)。
        • |-ArrayDeque:基于数组实现的尾插队列(包含head,tail头尾指针).
        • |-PriorityQueue:基于数组的自排序优先级队列(基于数组实现存储的二叉树堆排)。
      • |-Set:无序、不可重复的集合
        • |-HashSet:基于Hash+数组+链表实现的Set。
          • |-LinkedHashSet:一个基于LinkedHashMap实现的Set。
        • |-TreeSet:一个基于TreeMap实现的Set。
        • |-EnumSet:
          • |-JumboEnumSet
          • |-RegularEnumSet
    • Map:有映射关系的集合
      • |-HashMap:基于Hash+数组+链表实现的Map。
        • |-LinkedHashMap:基于HashMap实现的双向链表。
      • |-HashTable:基于Hash+数组+链表实现的线程安全(sync)Map。
      • |-TreeMap:基于红黑树实现的有序Map。
      • |-WeakHashMap:K为弱引用的HashMap,使用中,若k没有被引用则会自动回收掉。

    Collection接口

    Collection接口是Set,Queue,List的父接口。Collection接口中定义了多种方法可供其子类进行实现,以实现数据操作。

    Collection接口定义的方法:

    Set集合

    Set集合与Collection集合基本相同,没有提供任何额外的方法。实际上Set就是Collection,只是行为略有不同(Set不允许包含重复元素)。
    Set集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入。

    List集合

    List集合代表一个元素有序、可重复的集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素 。List集合默认按元素的添加顺序设置元素的索引,例如第一个添加的元素索引为0,第二个添加的元素索引为1......

    Queue集合

    Queue用户模拟队列这种数据结构,队列通常是指“先进先出”(FIFO,first-in-first-out)的容器。队列的头部是在队列中存放时间最长的元素,队列的尾部是保存在队列中存放时间最短的元素。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素。通常,队列不允许随机访问队列中的元素。

     

    Map集合

    Map用户保存具有映射关系的数据,因此Map集合里保存着两组数,一组值用户保存Map里的key,另一组值用户保存Map里的value,key和value都可以是任何引用类型的数据。Map的key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false。
     



     
     
    参考:
     
     
     
     
  • 相关阅读:
    hibernate中持久化对象的生命周期(转载)
    IDEA调试技巧之条件断点
    POI中不推荐的方法与其替代的方法
    visualvm监控类是否是多例模式
    IDEA中Maven项目使用Junit4单元测试的写法
    JPQL的关联查询
    poi的cellstyle陷阱,样式覆盖
    studio 连不上远程仓库的各种原因分析
    Concurrent usage detected
    我的SSH框架实例(附源码)
  • 原文地址:https://www.cnblogs.com/Jason-Xiang/p/9766604.html
Copyright © 2020-2023  润新知