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

原文地址:https://www.cnblogs.com/Dfrank/p/11620076.html

时间: 2025-01-06 17:16:40

Data Struct and Data Type的相关文章

data struct | heap

1 #include <iostream> 2 #include <string.h> 3 using namespace std; 4 5 template <class T> 6 class Heap { 7 public: 8 Heap():n(0), capacity(100) { 9 this->arr = new T[capacity]; 10 } 11 12 ~Heap() { 13 delete[] arr; 14 } 15 16 void ins

Ajax retrieve JSON data and Html data from MVC Controllers in ASP.NET MVC

一. 准备好后台测试数据,过程略 二.客户端处理 @{ ViewBag.Title = "Index"; } <h2>Ajax Demo</h2> <div style="width: 600px; "> <div style="background-color:lightgray"> <h2>Meals</h2> </div> <p>Click th

关于 Data URI Scheme -- data:image/jpg;base64

转载一篇大神的文章 大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如: data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAeAAD/7gAOQWRvYmUAZMAA= //这是随便写的,不要访问 什么是DATA URI Scheme呢? 其实就是形如data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAA

ARM MAP文件解析(1)-Code (inc. data)、RO Data、RW Data、ZI Data、Debug

From:http://www.keil.com/support/man/docs/armlink/armlink_pge1362065942464.htm 5.3 Example of using the --info linker option This is an example of the output generated by the --info option To display the component sizes when linking enter: armlink --

JavaScript data types and data structures

JavaScript data types and data structures Programming languages all have built-in data structures, but these often differ from one language to another. This article attempts to list the built-in data structures available in JavaScript and what proper

Datasets for Data Mining and Data Science

From kdnuggets Data repositories AWS (Amazon Web Services) Public Data Sets, provides a centralized repository of public data sets that can be seamlessly integrated into AWS cloud-based applications. BigML big list of public data sources. Bioassay da

ELK之kibana的web报错[request] Data too large, data for [&lt;agg [2]&gt;] would be larger than limit of

ELK架构:elasticsearch+kibana+filebeat 版本信息: elasticsearch 5.2.1 kibana 5.2.1 filebeat 6.0.0 (预览版) 今天在进行ELK测试的时候,在kibana上面discover无论那个index,发现均会报错: [request] Data too large, data for [<agg [2]>] would be larger than limit of 并且在elasticsearch的日志可以看到: or

Big Data Analytics and Data Mining 第一天.

今天是上课的第一天.真心很感激导师能让我出来学习.今天突然觉得自己要好好学习英语.并不是上课的时候我看不懂裴教授的课件.而是觉得如果英语不好就很像乡巴佬那样,很难接触到高级的东西. 通过今天的听讲,我感觉对数据挖掘的理解更深刻些. 以前总觉得自己研究生的目标是要好好学习算法,好好学习相关的技术. 现在觉得除了要好好学习算法外,我也期待自己能做出一些研究. 记录下今天讲课的内容. 今天我觉得主要讲了三部分: 1,数据挖掘相关的概念及相关的学术期刊. 从广义上来定义数据挖掘:The art of d

初探 spring data(一)--- spring data 概述

由于自己一个项目要用多到Sql与NoSql两种截然不同的数据结构,但在编程上我希望统一接口API,让不同类型的数据库能在相同的编程接口模式下运作.于是找了一个spring的官网,发现一个spring data的项目.Spring Data 统一所有访问数据库的接口,为开发者提供一个更加简便的开发方式  Spring Data 官网 下面是几个核心的项目介绍 Spring Data Commons - 每个Spring Data 项目的核心基础 (因此每一个Spring Data项目都使用统一的接