zoukankan      html  css  js  c++  java
  • java 之 集合概述

    一、集合概述

      不管是哪一种数据结构,其实本质上都是容器来着,就是用来装对象的。因此,我们就要搞清楚两点:(1)如何存储(2)存储特点

      1、集合

        集合是 Java 中提供的一种容器,可以用来存储多个数据。

      2、集合和数组都是容器,有什么区别呢?

      •  数组的长度是固定的。集合的长度是可变的。
      •    数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象,而且对象的类型可以不一致。

    二、数组

      •  逻辑结构:线性的
      •     物理结构:顺序的存储结构
      •     申请内存:一次申请一大段连续的空间,一旦申请到了,内存就固定了
      •     存储特点:所有数据存储在这个连续的空间中,数组中的每一个元素都是一个具体的数据(或对象),所有数据都紧密排布,不能有间隔。

        如图:

      操作:

        (1)查询:每一个元素都有一个数值下标,可以通过下标瞬间定位到某个元素

        (2)增加:

          •   先使用 total 变量辅助记录实际存储元素个数
          •   从尾部增加:数组名[total++]=新元素
          •   从其他位置插入:先把index位置开始所有元素后移,然后数组名[index]=新元素

        (3)删除:先把index后面的元素前移,然后数组名[total--]=null

        (4)修改: 直接数组名[index]=新元素

      优缺点:

        优点:按索引查询效率高

        缺点:添加/删除效率低,因为都涉及到移动元素;无法直接获取有效元素的个数,需要total来辅助

      如图:

     

    三、集合

       为了可以满足用户数据更多种的逻辑关系,而设计的一系列的不同于数组的可变的聚合的抽象数据类型。这些接口和类在java.util包中,因为类型很丰富,因此我们通常称为集合框架集。

        Java 中的集合按照其存储结构可以分为两大类:

           

         Collection:层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接实现:它提供更具体的子接口(如 Set 和 List、Queue)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。

        •  List:有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
        •    Queue:队列通常(但并非一定)以 FIFO(先进先出)的方式排序各个元素。不过优先级队列和 LIFO 队列(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按 LIFO(后进先出)的方式对元素进行排序。
        •  Set:一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象。
          •  SortedSet 进一步提供关于元素的总体排序 的 Set。这些元素使用其自然顺序进行排序,或者根据通常在创建有序 set 时提供的 Comparator进行排序。该 set 的迭代器将按元素升序遍历 set。提供了一些附加的操作来利用这种排序。

         

         Map:将键映射到值(key,value)的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。 Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如 HashMap 类。

         SortedMap:进一步提供关于键的总体排序 的 Map。该映射是根据其键的自然顺序进行排序的,或者根据通常在创建有序映射时提供的 Comparator 进行排序。

     

  • 相关阅读:
    Python自然语言处理读书笔记第7章
    [转]基于SNS的文本数据挖掘
    使用python多线程实现一个简单spider
    基于内存共享的并行排序算法慢谈(中)
    [转]为什么我反对纯算法面试题
    从客户端检测到有潜在危险的Request.Form值
    repeater 回发或回调参数无效
    Nginx安装、平滑升级与虚拟机配置
    log4j.properties的配置示例
    jquery一般方法介绍
  • 原文地址:https://www.cnblogs.com/niujifei/p/11434784.html
Copyright © 2011-2022 走看看