什么是ADT?(摘要数据类型)

Tom*_*014 33 language-agnostic terminology abstract-data-type

我目前正在研究抽象数据类型(ADT),但我根本没有得到这个概念.有人可以向我解释这实际上是什么吗?什么是收藏,包和List ADT?简单来说?

Pre*_*raj 69

抽象数据类型(ADT)是一种数据类型,其中仅定义行为但不实现.

与ADT相反的是具体数据类型(CDT),其中包含ADT的实现.

示例:
Array, List, Map, Queue, Set, Stack, Table, Tree, and Vector是ADT.这些ADT中的每一个都具有许多实现,即CDT.容器是高于所有ADT的高级ADT.

现实生活中的例子:
书是抽象的(电话簿是一种实现)

在此输入图像描述

  • 书中的例子加1 (15认同)

Bil*_*ard 16

Abstact数据类型维基百科的文章有很多可说的.

在计算机科学中,抽象数据类型(ADT)是具有相似行为的某类数据结构的数学模型; 或者对于具有类似语义的一种或多种编程语言的某些数据类型.抽象数据类型是间接定义的,只能通过可能对其执行的操作以及对这些操作的影响(以及可能的成本)的数学约束来定义.

稍微具体而言,您可以将Java的List界面作为示例.界面根本没有明确定义任何行为,因为没有具体的List类.接口仅定义一组其他类(例如ArrayListLinkedList)必须实现的方法才能被视为a List.

一个集合是另一个抽象数据类型.在Java的情况下Collection接口,它甚至比更抽象List,因为

List接口放置额外的约定,超过指定Collection接口上的合同iterator,add,remove,equals,和hashCode方法.

一个也称为multiset.

在数学中,multiset(或bag)的概念是集合概念的概括,其中成员被允许不止一次出现.例如,有一个唯一的集合包含元素a和b而没有其他元素,但是有许多具有此属性的多集合,例如包含两个副本a和一个b的多集合或包含三个副本的多个集合a和b都是.

在Java中,Bag将是一个实现非常简单的接口的集合.您只需要能够将项目添加到包中,检查其大小,并迭代它包含的项目.有关示例实现,请参阅Bag.java(来自Sedgewick和Wayne的算法第4版).