Discussion:
[問題] 如何建立動態的二維陣列
(时间太久无法回复)
用功點吧!
2006-09-26 03:40:55 UTC
Permalink
請問一下,我有一個二維的陣列,但是每一列的長度都不同,請問該怎麼建立呢?

例如可能會長這樣:

int a[][]

a[0]=[] [] [] [] [] [] [] [] [] [] [] [] [] ......[] 100個

a[1]=[] [] [] [] 4個

a[2]=[] [] [] [] [] [] 6個
..
..

a[i]=[]...[] j 個

但是我的 i 和 j 一開始的時候都不知道,曾經想建個 ArrayList 陣列去做,

但出現 generic array creation 的錯誤,查了一下,發現泛型不可以做陣列,

請問該用什麼方式呢?

謝謝

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.138.148.68
小安
2006-09-26 04:11:02 UTC
Permalink
※ 引述《Nt1 (用功點吧!)》之銘言:
: 請問一下,我有一個二維的陣列,但是每一列的長度都不同,請問該怎麼建立呢?
: 例如可能會長這樣:
: int a[][]
: a[0]=[] [] [] [] [] [] [] [] [] [] [] [] [] ......[] 100個
: a[1]=[] [] [] [] 4個
: a[2]=[] [] [] [] [] [] 6個
: ...
: ...
: a[i]=[]...[] j 個
: 但是我的 i 和 j 一開始的時候都不知道,曾經想建個 ArrayList 陣列去做,

如果只是單純要做不規則的二維陣列,那麼只需這樣:

int[][] array = new int[m][];

array[0] = new int[n0];
array[1] = new int[n1];
array[2] = new int[n2];
.
.
.

: 但出現 generic array creation 的錯誤,查了一下,發現泛型不可以做陣列,
: 請問該用什麼方式呢?
: 謝謝

我不知道你的寫法是怎樣..

不過..

List<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>;

這樣應該是沒問題的

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.173.31
.....
2006-09-26 07:09:43 UTC
Permalink
※ 引述《Nt1 (用功點吧!)》之銘言:
: 請問一下,我有一個二維的陣列,但是每一列的長度都不同,請問該怎麼建立呢?
: 例如可能會長這樣:
: int a[][]
: a[0]=[] [] [] [] [] [] [] [] [] [] [] [] [] ......[] 100個
: a[1]=[] [] [] [] 4個
: a[2]=[] [] [] [] [] [] 6個
: ...
: ...
: a[i]=[]...[] j 個
: 但是我的 i 和 j 一開始的時候都不知道,曾經想建個 ArrayList 陣列去做,
: 但出現 generic array creation 的錯誤,查了一下,發現泛型不可以做陣列,
: 請問該用什麼方式呢?
: 謝謝

我總覺得用多維陣列會讓 maintain 的人看的很辛苦....



--

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.156.8
!H45
2006-09-26 07:26:48 UTC
Permalink
※ 引述《luoqr (.....)》之銘言:
: ※ 引述《Nt1 (用功點吧!)》之銘言:
: : 請問一下,我有一個二維的陣列,但是每一列的長度都不同,請問該怎麼建立呢?
: : 例如可能會長這樣:
: : int a[][]
: : a[0]=[] [] [] [] [] [] [] [] [] [] [] [] [] ......[] 100個
: : a[1]=[] [] [] [] 4個
: : a[2]=[] [] [] [] [] [] 6個
: : ...
: : ...
: : a[i]=[]...[] j 個
: : 但是我的 i 和 j 一開始的時候都不知道,曾經想建個 ArrayList 陣列去做,
: : 但出現 generic array creation 的錯誤,查了一下,發現泛型不可以做陣列,
: : 請問該用什麼方式呢?
: : 謝謝
: 我總覺得用多維陣列會讓 maintain 的人看的很辛苦....

這種多維陣列很像是學校內的各班資料

好比說:
一年一班:30人
一年二班:31人
一年三班:27人
一年四班:27人
二年一班:29人
二年二班:30人
二年三班:26人



[1][1][1~30]
[1][2][1~31]
[1][3][1~27]
[1][4][1~27]
[2][1][1~29]
[2][2][1~30]
[2][3][1~26]

因此才會用這種不等長的多維陣列吧

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.205.85
痞子軍團團長
2006-09-26 07:38:52 UTC
Permalink
※ 引述《H45 (!H45)》之銘言:
: ※ 引述《luoqr (.....)》之銘言:
: : 我總覺得用多維陣列會讓 maintain 的人看的很辛苦....
: 這種多維陣列很像是學校內的各班資料
: 好比說:
: 一年一班:30人
: 一年二班:31人
: 一年三班:27人
: 一年四班:27人
: 二年一班:29人
: 二年二班:30人
: 二年三班:26人
: ↓
: [1][1][1~30]
: [1][2][1~31]
: [1][3][1~27]
: [1][4][1~27]
: [2][1][1~29]
: [2][2][1~30]
: [2][3][1~26]
: 因此才會用這種不等長的多維陣列吧

這樣子的寫法很不 OO 阿
你建立一個班級的 class,class 裡頭塞 array field
然後再把各個班級塞在一個 Vector 或是 ArrayList
不是比較快樂嗎?

--
 侃侃長論鮮窒礙  網站:http://www.psmonkey.idv.tw
 眾目睽睽無心顫  個人版:telnet://legend.twbbs.org
 煢居少聊常人事 
 殺頭容易告白難  歡迎參觀 Java 版(@ptt.cc)精華區 \囧/

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.200.182
!H45
2006-09-26 07:56:42 UTC
Permalink
※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: ※ 引述《H45 (!H45)》之銘言:
: : 這種多維陣列很像是學校內的各班資料
: : 好比說:
: : 一年一班:30人
: : 一年二班:31人
: : 一年三班:27人
: : 一年四班:27人
: : 二年一班:29人
: : 二年二班:30人
: : 二年三班:26人
: : ↓
: : [1][1][1~30]
: : [1][2][1~31]
: : [1][3][1~27]
: : [1][4][1~27]
: : [2][1][1~29]
: : [2][2][1~30]
: : [2][3][1~26]
: : 因此才會用這種不等長的多維陣列吧
: 這樣子的寫法很不 OO 阿
: 你建立一個班級的 class,class 裡頭塞 array field
: 然後再把各個班級塞在一個 Vector 或是 ArrayList
: 不是比較快樂嗎?

塞來塞去的我聽得都頭暈了

不過我倒是贊同這個觀點
在一個班級陣列中: Classroom classes = new Classroom[m][n];
把每個班級都當成一個物件,以適當的屬性和行為來描述它
確實是一個比較聰明的作法

至於不存在的 二年四班 ,也可以用 nullObject 來忽略掉
不是一定要用 resizable 的容器才能解決問題就是了
nullObject 也是一個解決方案,參考看看

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.205.85
愚者
2006-09-27 00:15:18 UTC
Permalink
※ 引述《H45 (!H45)》之銘言:
: 塞來塞去的我聽得都頭暈了
: 不過我倒是贊同這個觀點
: 在一個班級陣列中: Classroom classes = new Classroom[m][n];
: 把每個班級都當成一個物件,以適當的屬性和行為來描述它
: 確實是一個比較聰明的作法
: 至於不存在的 二年四班 ,也可以用 nullObject 來忽略掉
: 不是一定要用 resizable 的容器才能解決問題就是了
: nullObject 也是一個解決方案,參考看看

大概還是要resizable,因為原po說
<%
但是我的 i 和 j 一開始的時候都不知道,
%>

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.26.34.20

Loading...