JAVA容器类

来源:互联网 发布:java 获取根目录路径 编辑:程序博客网 时间:2024/05/16 04:27

概念

容器可以管理对象的生命周期、对象与对象之间的依赖关系,您可以使用一个配置文件(通常是XML),在上面定义好对象的名称、如何产生(Prototype 方式或Singleton 方式)、哪个对象产生之后必须设定成为某个对象的属性等,在启动容器之后,所有的对象都可以直接取用,不用编写任何一行程序代码来产生对象,或是建立对象与对象之间的依赖关系。—————百度百科
换个更直白点的说明方式:容器是一个Java 所编写的程序,原先必须自行编写程序以管理对象关系,现在容器都会自动帮您作好。

容器的结构图

这里写图片描述

详细介绍

  • 集合类
    在详细介绍上面那张图之前,我们先理解一下集合类,集合类存放于java.util包中,集合类存放的是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用。集合类型主要有三种:set、list、map
    而我们为什么要用集合类呢?当我们事先不知道要存放数据的个数的时候,或者我们需要一种比数组下标存取机制更灵活的方法是,我们就需要用到集合类。

  • Collection接口
    Collection接口定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式。
    List在Collection之上增加了“有序”
    Set在Collection之上增加了“唯一”

    • Set接口
      set(集)是最简单的一种集合,结合我们学过的数据结构我们知道它只是将对象散乱的放在一起,并没有顺序而言。而因为我们对集中成员的访问和操作是通过集中对象的引用进行的,所以set中不能有重复对象。

      • HashSet类
        虽然set定义为无序,但必须存在某种方法能够高效地找到一个对象,而HashSet利用Hash函数进行了查询效率上的优化,其contain()方法经常被使用,以用于判断相关元素是否已经被添加过。
    • List接口
      list(列表)主要特征是其对象以线性方式进行存储,只有一个开头一个结尾,在数据结构中表现有数组和向量、链表、堆栈、队列。用户能够使用索引(元素在list中的位置)来精确的操作每个元素。

      • LinkedList类
        LinkedList使用双向链表来实现的,也就是每个对象,除了保存数据之外,还保存着在它前面和后面的那两个对象的reference,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
      • ArrayList类
        ArrayList类实现了可变大小的数组,它可以允许所有的元素。每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
  • Map接口
    Map(映射)与集或者列表有明显的区别,映射中每个项都是成对的。映射总存储的每个对象都有一个相关的关键字对象,关键字决定了对象在映射中的存储位置,检索对象时必须提供相应的关键字,而且关键字是唯一的。关键字本身并不能决定对象的存储位置,它需要对过一种散列(hashing)技术来处理,产生一个被称作散列码(hash code)的整数值,散列码通常用作一个偏置量,该偏置量是相对于分配给映射的内存区域起始位置的,由此确定关键字/对象对的存储位置。理想情况下,散列处理应该产生给定范围内均匀分布的值,而且每个关键字应得到不同的散列码。

    • HashMap类
      HashMap类继承Map接口,实现一个key-value映射的哈希表。

    总结

    容器可以理解为存储对象的一个器皿,这样就涉及到对于对象进行存储以及查询等一系列的操作,这些内容就跟我们学习过的数据结构是一样的,所以下一步,再熟悉熟悉数据结构。

0 0
原创粉丝点击