[quote]
描述:
'As3游戏数据结构’是一个包含了许多常见的用于Flash游戏的编程和应用开发的数据结构包。我做该项目的起因是因为我想要一个统一库来用于我的游戏。
Collections
几乎所有的类都实现了Collection 接口,它定义了以下几种方法:
contains(obj:*), 检测元素是否存在.clear(), 清空所有的元素.
getIterator(), 获得一个包含所有元素的Iterator对象
toArray(), 获得一个包含所有元素的Array对象
使用 Iterators
每一个实现了Collection 接口的类都能通过getIterator()方法来获得一个iterator 对象,一但你有一个iterator对象,你就能通过以下等例子来存取数据。
var myItr:Iterator = getIterator();
var value:*;
//read all values
while (myItr.hasNext())
{
value = myItr.next();
}
//write new value
myItr.start();
while (myItr.hasNext())
{
myItr.data = "newValue";
next();
}
//the same with a for loop
for (myItr.start(); myItr.hasNext(); myItr.next())
{
value = myItr.data;
}
请记住,iterator是基本一个迭代器,一些类还提供更复杂的处理,比如链表或树。这是必要的,因为你可以用在更多的迭代方向(来回,背部,上,下.. ) 。(ps。游戏中的人物控制)。你获得那些iterator不成功或者调用一个特殊的方法。(这句不懂怎么翻译)
var listItr:ListIterator = myLinkedList.getIterator() as ListIterator;
var listItr:ListIterator = myLinkedList.getListIterator();
数据结构:(这里没有翻译,但是给出了各个类的大概意思,资料来源于网络)
多维数组
该库包含一个二维数组和三维数组类,他们都是执行单一线性阵列,而不是嵌套的数组。这是最快的方法在Flash模拟多维数组和优于嵌套数组方法,因为多个阵列查找是比较慢的一个查找加上一个简单的算术表达式(这你也可以经常precompute在外环).该类最常用于2d或者3d地图。
队列
队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。
(1)允许删除的一端称为队头(Front)。 (2)允许插入的一端称为队尾(Rear)。 (3)当队列中没有元素时称为空队列。 (4)队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表。队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾(即不允许"加塞"),每次离开的成员总是队列头上的(不允许中途离队),即当前"最老的"成员离队。
栈
栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。 (1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。 (2)当表中没有元素时称为空栈。 (3)栈为后进先出(Last In First Out)的线性表,简称为LIFO表。栈的修改是按后进先出的原则进行。每次删除(退栈)的总是当前栈中"最新"的元素,即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除。
树
树形结构是一类重要的非线性结构。树形结构是结点之间有分支,并具有层次关系的结构。它非常类似于自然界中的树。 树结构在客观世界中是大量存在的,例如家谱、行政组织机构都可用树形象地表示。 树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结构;在数据库系统中,可用树来组织信息;在分析算法的行为时,可用树来描述其执行过程。
二叉树
二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。
二叉排序树和哈希表
二叉排序树和哈希表用于查找元素,其内部结构不同,通过不同的实现使其查找应用不相同。
单链表
链接方式存储的线性表简称为链表(Linked List)。 链表的具体存储表示为: ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的) ② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link)) 注意: 链式存储是最常用的存储方式之一,它不仅可用来表示线性表,而且可用来表示各种非线性的数据结构。
链表的结点结构 ┌──┬──┐ │data│next│ └──┴──┘ data域--存放结点值的数据域 next域--存放结点的直接后继的地址(位置)的指针域(链域) 注意: ①链表通过每个结点的链域将线性表的n个结点按其逻辑顺序链接在一起的。 ②每个结点只有一个链域的链表称为单链表(Single Linked List)。
堆和堆队列
堆:堆是一个特殊的二叉树,它的每一个节点都比子节点大。
堆队列:一个基于优先级堆的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取决于所使用的构造方法。优先级队列不允许使用 null 元素。依靠自然顺序的优先级队列还不允许插入不可比较的对象。
图
图(Graph)是一种复杂的非线性结构。
位向量
位向量是按位存储的向量.
[/quote]
描述:
'As3游戏数据结构’是一个包含了许多常见的用于Flash游戏的编程和应用开发的数据结构包。我做该项目的起因是因为我想要一个统一库来用于我的游戏。
Collections
几乎所有的类都实现了Collection 接口,它定义了以下几种方法:
contains(obj:*), 检测元素是否存在.clear(), 清空所有的元素.
getIterator(), 获得一个包含所有元素的Iterator对象
toArray(), 获得一个包含所有元素的Array对象
使用 Iterators
每一个实现了Collection 接口的类都能通过getIterator()方法来获得一个iterator 对象,一但你有一个iterator对象,你就能通过以下等例子来存取数据。
var myItr:Iterator = getIterator();
var value:*;
//read all values
while (myItr.hasNext())
{
value = myItr.next();
}
//write new value
myItr.start();
while (myItr.hasNext())
{
myItr.data = "newValue";
next();
}
//the same with a for loop
for (myItr.start(); myItr.hasNext(); myItr.next())
{
value = myItr.data;
}
请记住,iterator是基本一个迭代器,一些类还提供更复杂的处理,比如链表或树。这是必要的,因为你可以用在更多的迭代方向(来回,背部,上,下.. ) 。(ps。游戏中的人物控制)。你获得那些iterator不成功或者调用一个特殊的方法。(这句不懂怎么翻译)
var listItr:ListIterator = myLinkedList.getIterator() as ListIterator;
var listItr:ListIterator = myLinkedList.getListIterator();
数据结构:(这里没有翻译,但是给出了各个类的大概意思,资料来源于网络)
多维数组
该库包含一个二维数组和三维数组类,他们都是执行单一线性阵列,而不是嵌套的数组。这是最快的方法在Flash模拟多维数组和优于嵌套数组方法,因为多个阵列查找是比较慢的一个查找加上一个简单的算术表达式(这你也可以经常precompute在外环).该类最常用于2d或者3d地图。
队列
队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。
(1)允许删除的一端称为队头(Front)。 (2)允许插入的一端称为队尾(Rear)。 (3)当队列中没有元素时称为空队列。 (4)队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表。队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾(即不允许"加塞"),每次离开的成员总是队列头上的(不允许中途离队),即当前"最老的"成员离队。
栈
栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。 (1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。 (2)当表中没有元素时称为空栈。 (3)栈为后进先出(Last In First Out)的线性表,简称为LIFO表。栈的修改是按后进先出的原则进行。每次删除(退栈)的总是当前栈中"最新"的元素,即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除。
树
树形结构是一类重要的非线性结构。树形结构是结点之间有分支,并具有层次关系的结构。它非常类似于自然界中的树。 树结构在客观世界中是大量存在的,例如家谱、行政组织机构都可用树形象地表示。 树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结构;在数据库系统中,可用树来组织信息;在分析算法的行为时,可用树来描述其执行过程。
二叉树
二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。
二叉排序树和哈希表
二叉排序树和哈希表用于查找元素,其内部结构不同,通过不同的实现使其查找应用不相同。
单链表
链接方式存储的线性表简称为链表(Linked List)。 链表的具体存储表示为: ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的) ② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link)) 注意: 链式存储是最常用的存储方式之一,它不仅可用来表示线性表,而且可用来表示各种非线性的数据结构。
链表的结点结构 ┌──┬──┐ │data│next│ └──┴──┘ data域--存放结点值的数据域 next域--存放结点的直接后继的地址(位置)的指针域(链域) 注意: ①链表通过每个结点的链域将线性表的n个结点按其逻辑顺序链接在一起的。 ②每个结点只有一个链域的链表称为单链表(Single Linked List)。
堆和堆队列
堆:堆是一个特殊的二叉树,它的每一个节点都比子节点大。
堆队列:一个基于优先级堆的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取决于所使用的构造方法。优先级队列不允许使用 null 元素。依靠自然顺序的优先级队列还不允许插入不可比较的对象。
图
图(Graph)是一种复杂的非线性结构。
位向量
位向量是按位存储的向量.
[/quote]