2012-10-10 198 views
2

我想在ABAP中構建樹數據結構。我的關鍵要求是可以使用通用對象作爲樹的節點。如何使用ABAP創建通用樹數據結構OO

我的Java它會是這個樣子:

public class MyTree<? extends TreeNode> { 
(...) 
} 

我目前的做法是定義一個類TreeNode這是超類的樹內的所有可能的節點。

是否有更優雅的方式來實現ABAP OO的泛型類型?或者,有沒有數據結構隨SAP一起提供,我不知道?

回答

1

SORTED TABLE上的大多數操作具有像二叉樹一樣的性能特徵。我非常肯定,排序表的內部實現是二叉樹的一些味道(或者是skip-lists)。

在我的實習過程中,我重新創建了一些典型的數據結構,如鏈接列表或二叉樹與ABAP對象,並將它們的性能與等效的本地TABLE風格進行了比較 - 本機通常具有相同的複雜類別,但它們總是執行得更快。除非你有一些非常特殊的用例需要一些奇特的數據結構,否則你應該嘗試使用TABLE,SORTED TABLEHASHED TABLE

+0

我需要處理數據,這些數據是按照模型的方式組織在樹中,即數據是以父子方式組織的。所以我想保持我的代碼清潔和可讀,我實現了像樹一樣... –

+0

我同意。使用帶有NODE和PARENT字段的內部表格(例如)來建模您的樹。它的性能更好,你可能會達到你想要的。 – mydoghasworms

+0

當您的數據具有樹狀結構並且在樹中搜索的性能不是很重要時,將其存儲在節點對象中可能是一個可行的選擇。但請記住,這些將很難存儲在數據庫中,因爲樹節點到錶行的序列化和反序列化可能變得複雜。 – Philipp