以下为各主流编程语言中常用的数据类型与数据结构:

 

  • String(字符串)

如:'abcde',"hello word","123","你好" 等一般被引号括起来的字符。

  • Int(整数)

如:0,12345,-99等整数值。

  • Float(浮点数)

如:123.25,-23555.0,2552.992,1.2e3,7E-10等浮点数值。

  • Boolean(布尔型)

如:true,false等真假值。

  • Numeric(数字型)

如123,456.23等包含整数或浮点数的值。

  • Json(json类型)注:虽然编程语言没有这种类型,但我觉得应该成为一种类型。

如{"name":"jobs","age":66},是一个json字符串。

  • Xml(Xml类型)注:虽然编程语言没有这种类型,但我觉得应该成为一种类型。

如:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
  • Array(数组类型)

数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。

大多数编程语言的数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。数组中的特定元素可以通过索引访问。可以是一维数组和多维数组。

PHP中的数组实际上是一个有序映射(map)。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。

Ruby 数组是任何对象的有序整数索引集合。数组中的每个元素都与一个索引相关,并可通过索引进行获取。Ruby 数组可存储诸如 String、 Integer、 Fixnum、 Hash、 Symbol 等对象,甚至可以是其他 Array 对象。Ruby 数组不需要指定大小,当向数组添加元素时,Ruby 数组会自动增长。

  • Enum(枚举类型)

Enum它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,编程语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。

如:enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };

  • Struct(结构体类型)

Struct是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。结构体(struct):是一种复合数据类型,结构类型。

如:

struct Student{
    char*name;//姓名
    int age;//年龄
    float height;//身高
};

 

  • Map类型

Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序。map 类型通常可理解为关联数组(associative array) :可使用键作为下标来获取一个值,正如内置数组类型一样。而关联的本质在于元素的值与某个特定的键相关联, 而并非通过元素在数组中的位置来获取。

  • Set(集合类型)

Set是无序且无重复元素的集合(具有自动去重的功能),集合内的元素必须是不可变对象。集合是相当于只有键没有值的字典(键则是集合的数据).

  • Dictionary(字典类型)

字典结构 有的语言中也称 map——用来存储不重复key的hash结构。不同于集合(set)的是,字典使用的是键值对的形式来存储数据,字典是无序的对象集合,元素是通过键来存取的,而不是通过索引值存取。

  • List(列表类型)

有序,可重复集合,序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。列表的数据项不需要具有相同的类型.与传统数组不同,列表可以扩展和缩小,并动态存储在内存中.列表还构成了其他抽象数据类型的基础,包括队列,堆栈及其变体。

  • Tuple(元组类型)

元组与列表类似,不同之处在于元组的元素不能修改。元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取 ,虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。当我们希望将一些不同类型的数据和成单一对象时,可能大家会想到结构体(类),tuple是一种比结构体来的更加方便的类型 。与列表不同的是元组可以包含不同类型的元素。

  • hash(哈希类型)

哈希(Hash)是类似 "key" => "value" 这样的键值对集合。哈希类似于一个数组,只不过它的索引不局限于使用数字。Hash 的索引(或者叫"键")几乎可以是任何对象。Hash 虽然和数组类似,但却有一个很重要的区别:Hash 的元素没有特定的顺序。 如果顺序很重要的话就要使用数组了。

  • Stack(堆栈类型)

栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下,随后一件一件往上堆。取走时,只能从上面一件一件取。读和取都在顶部进行,底部一般是不动的。栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一端称栈底。插入一般称为进栈,删除则称为退栈。 栈也称为后进先出表。

  • Queue(队列类型)

队列是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。

  • Vector(向量类型)

有序,可重复的线程安全的集合,向量(Vector)类和传统数组非常相似,但是Vector的大小能根据需要动态的变化。和数组一样,Vector对象的元素也能通过int索引访问。Vector 的值可以是任何类型.

  • object(对象类型)

对象是类的实例,包含一些属性与方法。对象是一种无序数据的集合。

其它类型:

位集合(BitSet)
共用体(union)类型
zset(sorted set:有序集合)

可选(Optionals)类型

排序列表(SortedList)

collection类型

原创文章,转载请注明:来自Lenix的博客,地址 http://blog.p2hp.com/archives/5964

最后更新于 2019年4月12日

编程语言中常用的数据类型与数据结构
标签: