Data Struct and Data Type

Posted dfrank

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Data Struct and Data Type相关的知识,希望对你有一定的参考价值。

数据结构、数据类型

在看JavaHashMap之前,插播一点重要的数据结构要点。

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类型的。

以上是关于Data Struct and Data Type的主要内容,如果未能解决你的问题,请参考以下文章

HIT软件构造课程3.1总结(data type and type checking)

Compound Data Type of Rust

Data Binding Android - Type parameter T has incompatible upper bounds : ViewDataBinding and MainAct(

Hive 5Hive 的数据类型 和 DDL Data Definition Language)

Data type-数据类型

Protobuf-net Error:Type is not expected, and no contract can be inferred: System.Data.DataTable