Data Struct and Data Type
Posted dfrank
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Data Struct and Data Type相关的知识,希望对你有一定的参考价值。
数据结构、数据类型
在看Java
的HashMap
之前,插播一点重要的数据结构要点。
1. 数据结构(data structure)
-
数据结构表达的是:用什么样的结构,组织一类数据。
-
分为逻辑结构和物理结构:
- 基本的逻辑结构有:集合、线性结构、树形结构、图;
- 物理结构:顺序存储、链式存储;
2. 数据类型(data type)
-
数据类型是和数据结构密切相关的,它是:值的集合和定义在这个值集上的一组操作的总称。
例如:c语言中的一种数据类型:整型变量,其值集为某个区间上的整数,定义在这些整数上的操作为加、减、乘、除和取模等算数运算。
-
高级语言中数据类型分为两类:
-
原子类型:值不可分解,是什么就是什么。如整型、字符型等;
-
结构类型:其值是由若干成分按某种结构组成的,因此可分解,并且它的成分可以是原子类型也可以是结构类型。比如数组,其值是由若干分量组成的,每个分量可以是整数,或者也可以是数组。
- 所以,结构类型可以看成由一种数据结构和定义在其上的一组操作组成。
-
-
所以你看,数据结构仅仅代表着一种结构,而我们在编程语言中是使用数据类型,如果编程语言想要实现某种数据结构,那么必须将其封装为一种数据类型,更狭义的说是数据类型中的结构类型。
3. 深入理解
也许你还是有些混沌,但是没关系,在哪里跌倒就在哪里睡着嘛~ 我再说点能让你深入理解的…
-
实际上,在计算机中,数据类型的概念并非局限于高级语言中,每个处理器[a]都提供了一组原子类型或结构类型。
-
例如,一个计算机硬件系统通常含有“位”、“字节”、“字”等原子类型,他们的操作通过计算机设计的一套指令系统直接由电路系统完成;
-
而高级程序语言提供的数据类型,其操作需要通过编译器或解释器转化为底层,即汇编语言或机器语言的数据类型来实现。
-
-
引入“数据类型”的目的,
-
从硬件角度看,是作为解释计算机内存中信息含义的一种手段,
-
而对使用数据类型的用户来说,实现了信息的隐蔽,即将一切用户不必了解的细节都封装在类型中。
- 例如,用户在使用“整数”类型时,既不需要了解“整数”在计算机内部是如何表示的,也不需要知道其操作是如何实现的。
- 如“两个整数求和”,程序员注重的仅仅是其“数学上求和”的抽象特性,而不是其硬件的“位”操作如何进行。
-
所以,
在编程语言中运用“数据结构”就是在使用被一层一层封装起来的某种数据类型
在编程语言中运用“数据结构”就是在使用被一层一层封装起来的某种数据类型
在编程语言中运用“数据结构”就是在使用被一层一层封装起来的某种数据类型
java 中的hashmap
FAQ:
-
为什么要有
HashMap
?答:我非常期待能在Java 中使用Hash表 这种数据结构 ,因为它的快速存取特性。
-
Hash表 和
HashMap
的关系?答:Hash表 是一种逻辑数据结构,
HashMap
是Java中的一种数据类型(结构类型),它通过代码实现了Hash表 这种数据结构,并在此结构上定义了一系列操作。 -
这一章节我们要干嘛?
答:首先要明白我们是在干嘛,我们是在分析一个叫做哈希表的数据结构吗?
不是!不是!不是!我们是在讨论一种高级程序设计语言中某个数据类型的实现,它实现了哈希表这种数据结构,但它绝不是哈希表本身,它就是它自己 -
HashMap
类型。不明白的话我再说一句:记不记得你学
Map
(HashMap
父接口)时见到的第一句描述“An object that maps keys to values. ”简单翻译就是:Map是一个键值对对象。但是,可没人告诉过你哈希表是键值对结构。 -
Java中的数据类型
答:有些话不明白的说出来,其实容易让人想不明白。所以我想说:
- 实际上,编程语言中数据类型都是层层封装的结果;
- 实际上,Java 中只有3类数据类型:原生类型(primitive8个)、数组、Object;
- 实际上,无论官方的集合框架也好,你自己创建的类也好,都只能是源自于Object并依赖于原有的这3类数据类型;
- 最终,到现在你可能才会发现,“数组”这种类型竟是如此的重要,在Java 中,如果没有数组作为基础结构,你是不可能构造出任何想实现某种数据结构的Object类型的。
以上是关于Data Struct and Data Type的主要内容,如果未能解决你的问题,请参考以下文章
HIT软件构造课程3.1总结(data type and type checking)
Data Binding Android - Type parameter T has incompatible upper bounds : ViewDataBinding and MainAct(
Hive 5Hive 的数据类型 和 DDL Data Definition Language)
Protobuf-net Error:Type is not expected, and no contract can be inferred: System.Data.DataTable