台灣最大程式設計社群網站
線上人數
762
 
會員總數:243161
討論主題:187981
歡迎您免費加入會員
討論區列表 >> VB.NET >> 不定維度陣列應該選用什麼方式比較好?
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
不定維度陣列應該選用什麼方式比較好?
價值 : 50 QP  點閱數:282 回應數:12

樓主

黑熊
初學者
20 9
398 27
發送站內信

請問各位大神

我想寫一個資料處理的程式,但沒辦法確定使用者會寫入多少資料,所以想要動態控制陣列維度增加程式彈性
我目前處理的資料有分兩個階層(有上下從屬關係),第一層舉例為A、B、C、C......,A的下層舉例為A1、A2、A3,B的下層舉例為B1、B2、B3

EX:
Dim Level1() as Array = {A,B,C.....}
DIm A() as Array = {A1,A2,A3....}
Dim B() as Array = {B1,B2,B3....}

如果有是有限維度的陣列我想到的方法是定義出一個陣列"Dim 下階陣列() as Array",塞進第二階層資料A1、A2....之後
在定義一個上層“Dim 上層陣列() as Array”把剛剛的下層陣列塞進去
但如果要做動態調整維度的話這個方法似乎不是這麼靈活

目前找到可能的方式是使用
1.ArrayList
2.DataTable

ArrayList可以允許不預先定義陣列維度,但如果我再輸入資料時抽掉中間某個位置的資料好像會直接補位不留空
這樣我如果想要讓某兩個位置的資料互換位置可能會很難寫

DataTable看起來沒辦法儲存有從屬關係的資料,或許有其他方法可以讓DataTable寫我想要的結果,但不前暫時想不到

不知道還有沒有其他方案可以參考,或是我對上面的方法有什麼誤解可以指點我一下,感謝各位

搜尋相關Tags的文章: [ 陣列 ] , [ 維度 ] ,
本篇文章發表於2018-03-23 21:14
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
獎金系統的上下線獎金計算嗎??
(因為不知道下線會有多少個??)

================
單純上下層只需要用資料夾的概念就可以解決了
A資料夾底下有A1,A2,A3
B資料夾底下有B1,B2
C資料夾底下有C1,C2,C3,C4,C5.....

多層次的話
A1資料夾底下有【むA1め1】,【むA1め3】,【むA1め3】,【むA1め4】。。。
要無限層也不是問題...
本篇文章回覆於2018-03-24 01:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

黑熊
檢舉此回應
我想寫出的架構和你說的是一樣的,如果預先定義好階層數與每個階層的維度應該沒什麼困難
但如果要依據使用者輸入資料來動態調整階層數目與維度有什麼方法可以實踐這個概念呢?

我想要做到輸入資料時可以動態更新層級數目與每個層級的陣列維度,如果把階層數和陣列維度寫死
不是輸入到一半沒辦法再寫入,就是一開始要佔用很多記憶體空間,這樣好像沒有完美的解決問題?
本篇文章回覆於2018-03-24 08:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

P陳
檢舉此回應

這種的層次會一直增加

建議用資料表的方式處理
只要在設計資料表時,將上一層是誰的資料也納進來,那不管幾層就都可以處理。
(父層只會有一人,子層則會有多人)
本篇文章回覆於2018-03-24 09:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

P陳
檢舉此回應
DataTable看起來沒辦法儲存有從屬關係的資料 <--- 可以的 誰說不行
本篇文章回覆於2018-03-24 09:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

黑熊
檢舉此回應
好像沒比較少Visual Bacis的中文書在講DataTable,不知道有沒有其他的書有在寫這個部分如何實作的?
本篇文章回覆於2018-03-25 10:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
最有價值解答

P陳
檢舉此回應
Visual Bacis的中文書在講DataTable <--- 這是二個不同層次的東西

以您這個提問而言,要學習的【資料結構】這方面的內容。

資料結構不難,但經驗值很重要。
本篇文章回覆於2018-03-25 13:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

黑熊
檢舉此回應

!上頁
下頁

主題活動試閱
資料結構:使用 Visual Basic 語言(適用VB 2008-2017)


你是說類似這樣的書嗎?
本篇文章回覆於2018-03-25 19:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
不錯的參考

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
資料表(DataTable)的儲存方式:

以下是欄位
【流水號】【父ID(父項目的流水號】【名稱】
=========================

以下是資料
【1】【0】【王小明(沒有父項目)】
【2】【0】【陳大明(沒有父項目)】
【3】【0】【周小虎(沒有父項目)】
【4】【3】【鐵雄(父項目是周小虎)】
【5】【3】【蓋特(父項目是周小虎)】
【6】【3】【珍珍(父項目是周小虎)】
【7】【2】【張三(父項目是陳大明)】
【8】【1】【李四(父項目是王小明)】


我已經找不到更為簡短的例子了...
本篇文章回覆於2018-03-25 19:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

黑熊
檢舉此回應
我大概了解的的意思了

但我沒有學過演算法和資料結構,所以對於這種資料處理的程式架構規劃不是很熟悉,看來還是要先翻翻這些書才能開始寫程式....
本篇文章回覆於2018-03-25 21:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

P陳
檢舉此回應
資料表的建立 ,絶非只是欄位訂一訂而已, 經驗值非常重要。
您不可能從一本書中就學到所有技巧的,
書名看起來不錯,就買了研究了,

如果要混這行的話,遲早都要接觸資料結構這塊的。
本篇文章回覆於2018-03-26 06:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

黑熊
檢舉此回應
我後來是先把最底層的參數用自訂類別打包成物件,再把它們放進串列裡“List(OF ....)”
因為這個資料沒有到上百筆,所以執行效率低下的問題不會太明顯

但這終究不是一個學習應有的態度,只是資料結構和演算法這兩們學問並非一朝一夕可以精熟的,還是先解決火燒屁股的問題比較實際...

目前有看到清大的資料結構線上課程,但都是在講方法,不知道各位有沒有知道比較偏向實作的資料結構顯上課程或是書籍?
本篇文章回覆於2018-04-03 18:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

P陳
檢舉此回應
當然要先有方法才能實作,否則只能算是臨摩而已,
快是快但較難深入
本篇文章回覆於2018-04-03 21:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.