zoukankan      html  css  js  c++  java
  • 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类型的。
  • 相关阅读:
    BEC listen and translation exercise 44
    中译英12
    BEC listen and translation exercise 43
    中译英11
    BEC listen and translation exercise 42
    中译英10
    BEC listen and translation exercise 41
    中译英9
    BEC listen and translation exercise 40
    中译英8
  • 原文地址:https://www.cnblogs.com/Dfrank/p/11620076.html
Copyright © 2011-2022 走看看