ArrayList 可提供動態的空間大小,有新增和刪除等功能可使用,亦可在ArrayList內增加另一個ArrayList(二維、高維陣列)。 功能類似C++的vector。 ... <看更多>
java arraylist二維陣列 在 多維和鋸齒狀陣列 - 他山教程 的推薦與評價
教程列表 · SO官方文檔. Java Language 教程 · 陣列 · 建立和初始化陣列 · 從陣列建立列表 · 從集合建立陣列 · 多維和鋸齒狀陣列 ... ... <看更多>
java arraylist二維陣列 在 [問題] 讀txt檔存成二維陣列- 看板java 的推薦與評價
請教各位高手,我想要將txt檔的內容存成二維陣列該txt檔的第一行(n)為二維陣列的列 ... String[n]; ArrayList myList = new ArrayList(); int i=0; while((line = br. ... <看更多>
java arraylist二維陣列 在 [問題] 型態不同的二維資料- 看板java - 批踢踢實業坊 的推薦與評價
第一次在貴板提問, 如果小弟爬文不確實或違反板規, 文章將在 24 內自行消毀 XD
我想要造一個 Table (可以想成二維陣列), 但是每一個 column 的 Type 不一樣
(就像資料庫中 Table, 每一筆資料中有好幾個不同型態的欄位)
而每一個 column 的 Type 不是事先知道的, 是程式執行時才知道的.
想問一下在 Java 裡頭, 怎麼樣實作這樣的結構最有效率
謝謝 !
底下是我的實作方式, 不過東西存得進去, 但讀出來時卻無法知道 Type :~
public class RecordTable {
private ArrayList<RecordColumn<?>> columns; // 二維且型態不同的 Table
....
// addValue 沒有問題
public <T> void addValue(int columnId, T value) {
RecordColumn<?> column = columns.get(columnId);
column.addObject(value);
}
// 想要寫的 getValue, 我知道這樣子 compile 不會過
public <T> T getValue(int columnId, int index) {
RecordColumn<?> column = columns.get(columnId);
return column.get(index); // arrayList 本身的 get
}
// 另一個版本, 雖然加上 cast 但還是沒有辦法 :~
public <T> T getValue(int columnId, int index) {
RecordColumn<?> column = columns.get(columnId);
return column.castValue(column.getObject(index));
}
// 這個是 OK 的, 不過只知道是 Object, 不知道原本的 type
public Object getObject(int columnId, int index) {
return columns.get(columnId).getObject(index);
}
} // RecordTable
// 這邊我原 code 用的是 composition, 不過意思上就是下面的繼承
public class RecordColumn<E> extends ArrayList<E> {
private final Class<E> type;
...
public RecordColumn(Class<E> type, int initialCapacity) {
super(initialCapacity);
this.type = type;
}
...
// 加資料進去沒有問題, type 不對的話會有 exception
public boolean addObject(Object e) {
return add(type.cast(e));
}
// 底下兩個配合上方藍色的 highlight
public Object getObject(int index) {
return get(index);
}
public E castValue(Object e) {
return type.cast(e);
}
} // RecordColumn
如果您看到這行的話, 非常感謝您了解我的問題.
謝謝 !
--
◢██████
█◤▁▂▃▌ █ █▌
◤ █°▋▊▅ █ ◢ ◢█◣ ◢█◣ █ ◢██ █◢◣
◥█████ █◢◤ █▅█ █▅█ █ █ █ █◤
███◤ █◥◣ █ █ █ █ █ █
◥█◤ █ ◥◣◥█◤ ◥█◤ ██ █◤█◣ █
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 96.42.26.222
※ 編輯: keelar 來自: 96.42.26.222 (01/21 07:28)
... <看更多>