• Data Struct and Data Type


    数据结构、数据类型

    数据类型底层是什么数据结构,数据类型在数据结构上都定义了那些操作。

    1. 数据结构(data structure)

    1. 数据结构表达的是:用什么样的结构,组织一类数据。

    2. 分为逻辑结构和物理结构:

      • 基本的逻辑结构有:集合、线性结构、树形结构、图;
      • 物理结构:顺序存储、链式存储;

    2. 数据类型(data type)

    1. 数据类型是和数据结构密切相关的,它是:值的集合和定义在这个值集上的一组操作的总称。

      例如:c语言中的一种数据类型:整型变量,其值集为某个区间上的整数,定义在这些整数上的操作为加、减、乘、除和取模等算数运算。

    2. 高级语言中数据类型分为两类:

      • 原子类型:值不可分解,是什么就是什么。如整型、字符型等;

      • 结构类型:其值是由若干成分按某种结构组成的,因此可分解,并且它的成分可以是原子类型也可以是结构类型。比如数组,其值是由若干分量组成的,每个分量可以是整数,或者也可以是数组。

        • 所以,结构类型可以看成由一种数据结构和定义在其上的一组操作组成。
    3. 所以你看,数据结构仅仅代表着一种结构,而我们在编程语言中是使用数据类型,如果编程语言想要实现某种数据结构,那么必须将其封装为一种数据类型,更狭义的说是数据类型中的结构类型。

    3. 深入理解

    也许你还是有些混沌,但是没关系,在哪里跌倒就在哪里睡着嘛~ 我再说点能让你深入理解的…

    1. 实际上,在计算机中,数据类型的概念并非局限于高级语言中,每个处理器[a]都提供了一组原子类型或结构类型。

      • 例如,一个计算机硬件系统通常含有“位”、“字节”、“字”等原子类型,他们的操作通过计算机设计的一套指令系统直接由电路系统完成;

      • 而高级程序语言提供的数据类型,其操作需要通过编译器或解释器转化为底层,即汇编语言或机器语言的数据类型来实现。

    2. 引入“数据类型”的目的,

      • 从硬件角度看,是作为解释计算机内存中信息含义的一种手段,

      • 而对使用数据类型的用户来说,实现了信息的隐蔽,即将一切用户不必了解的细节都封装在类型中。

        • 例如,用户在使用“整数”类型时,既不需要了解“整数”在计算机内部是如何表示的,也不需要知道其操作是如何实现的。
        • 如“两个整数求和”,程序员注重的仅仅是其“数学上求和”的抽象特性,而不是其硬件的“位”操作如何进行。

      ([a]:处理数据的单元,不局限于CPU,包括硬件系统、操作系统、高级语言、数据库等)




    所以, 
    在编程语言中运用“数据结构”就是在使用被一层一层封装起来的某种数据类型 
    在编程语言中运用“数据结构”就是在使用被一层一层封装起来的某种数据类型 
    在编程语言中运用“数据结构”就是在使用被一层一层封装起来的某种数据类型




    java 中的hashmap

    FAQ:

      1. 为什么要有HashMap

        答:我非常期待能在Java 中使用Hash表 这种数据结构 ,因为它的快速存取特性。

      2. Hash表 和HashMap的关系?

        答:Hash表 是一种逻辑数据结构,HashMap是Java中的一种数据类型(结构类型),它通过代码实现了Hash表 这种数据结构,并在此结构上定义了一系列操作。

      3. 这一章节我们要干嘛?

        答:首先要明白我们是在干嘛,我们是在分析一个叫做哈希表的数据结构吗?

        不是!不是!不是!我们是在讨论一种高级程序设计语言中某个数据类型的实现,它实现了哈希表这种数据结构,但它绝不是哈希表本身,它就是它自己 - HashMap类型。

        不明白的话我再说一句:记不记得你学Map(HashMap父接口)时见到的第一句描述“An object that maps keys to values. ”简单翻译就是:Map是一个键值对对象。但是,可没人告诉过你哈希表是键值对结构。

      4. Java中的数据类型

        答:有些话不明白的说出来,其实容易让人想不明白。所以我想说:

        • 实际上,编程语言中数据类型都是层层封装的结果;
        • 实际上,Java 中只有3类数据类型:原生类型(primitive8个)、数组、Object;
        • 实际上,无论官方的集合框架也好,你自己创建的类也好,都只能是源自于Object并依赖于原有的这3类数据类型;
        • 最终,到现在你可能才会发现,“数组”这种类型竟是如此的重要,在Java 中,如果没有数组作为基础结构,你是不可能构造出任何想实现某种数据结构的Object类型的。
  • 相关阅读:
    [ZT]数据表:USR02(登录数据)
    ASP.NET Web 应用程序与ASP.NET网站比较
    DataTable排序的一般方法
    如何重建開啟被锁的SAP超级用戶帐号
    SQL語句中时间格式的转换
    [ZT]提高 Ajax 应用程序性能,避开 Web 服务漏洞
    SAP NetWeaver
    SAP安装步骤[ECC6]WIN2000AS
    SAP&SAP Solution Manager中的常用命令
    [转]如何在Visio 2007中画接口和实现类的关系图
  • 原文地址:https://www.cnblogs.com/Dfrank/p/11620076.html
Copyright © 2020-2023  润新知