云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云服务器_网站建设的企业_便宜的

小七 141 0

内部表

ABAP的内部表是动态数据对象,允许处理具有相同结构的大量数据,从而负责动态内存管理。所以他们善于存储数据库表数据,这使得他们无处不在。复杂的数据结构通常被映射到内部表,以避免额外的努力来实现一个特殊的数据结构,而这种结构无论如何可能会有很差的性能。

但我在这里看到一个问题:高效的算法通常使用一个专用的数据结构来帮助用简单但正确的语言描述设计概念。没有其他选择,沟通和设计讨论都会受到影响。用一个理解良好的数据结构表达问题将有助于减少编程的智力挑战。

考虑到这一点,我的目标是展示不依赖内部表的ABAP解决方案。给定一个需要解决的问题,游戏将超越明显的内部表结构,数据挖掘和大数据,如果需要的话,回到基础,并找到一个有效的设计,值得付出额外的努力。

我把这种努力称为NoITAB,不仅仅是内部表,物联网和互联网的区别,在NoSQL中,这不仅仅是SQL。

堆栈

堆栈是一种抽象数据类型,大数据行业前景,提供对后进先出集合的访问,使用两种操作PUSH()和POP()。

您将使用堆栈(或递归)填充树状数据结构,如ABAP树视图控件。在ABAP中,更喜欢自定义堆栈,因为递归隐式使用的调用堆栈比堆更有限。一点也不。在include LMEVIEWSF01:

PUSH()操作被转换为APPEND,在内部表的末尾添加一个视图。POP()操作读取内部表中的最后一个条目,然后从表中删除该条目。

如果您觉得像我一样,POP()实现并没有在内部表操作方面自然地表达其意图。这可能会吸引你去寻找一条新的路径和DIY——一个使用链表的NoITAB堆栈实现,我们只在顶部插入和删除:

它容易使用吗?

作为宏的通用实现使其灵活轻量级。宏中的参数&2定义堆栈中元素的类型。有了这个,我可以创建任何类型的堆栈,北京大数据公司有哪些,即字符串堆栈:

这个比例是多少?

无论堆栈中元素的数量如何,PUSH()和POP()操作的实现都有固定的成本,即理论上可能的最佳行为。我能想到的唯一问题是垃圾收集器,它会在意外的时间启动以回收释放的内存,这可能会影响性能。

我经常使用这个堆栈,轻云,从不费心测量性能。如果您这样做,请在这里报告。

展望

内部表没有问题,但在某些情况下,我们知道更好的数据结构,以便收集数据。最简单的例子是堆栈,其中链表实现是高效且易于使用的。

与内部表相比,当我们只在列表的开头或结尾插入/删除时,自定义链表是高效的。一个定制的动态数组如果大小是固定的,那么它是有效的,所以我们可以使用ASSIGN with INCREMENT and RANGE命令(或者过时的DO variang/WHILE VARY命令)进行随机访问。

尝试概括一下,我们可以提供功能接口来更抽象的数据类型。我喜欢使用一个内部表基迭代器对象来处理ALV网格的选定条目。这里的好处不是性能,而是抽象(不仅仅是ITAB)。我已经为优先级队列提出了相同的方法。

所以我想听听您的NoITAB解决方案。

保持编码的乐趣