我有一個奇怪的錯誤,我不能讓我的頭在.size()方法看起來不會返回正確的值。ArrayList.size()返回不正確的值
這第一位代碼創建ArrayList。
public void createResultList(String query) {
ArrayList<ArrayList<String>> data = new ArrayList();
try {
ResultSet rs = st.executeQuery(query);
ResultSetMetaData meta = rs.getMetaData();
for(int i = 0; i < meta.getColumnCount(); i++) {
data.add(i, new ArrayList<String>());
}
int x = 0;
while(rs.next()) {
for(int y = 0; y < meta.getColumnCount(); y++) {
data.get(x).add(rs.getString(y + 1));
}
x++;
}
} catch(Exception e) {
JOptionPane.showMessageDialog(null, e);
}
ResultTable result = new ResultTable(data);
JTable table = new JTable(result);
JScrollPane scrollpane = new JScrollPane(table);
add(scrollpane);
refresh();
}
這是我的TableModel類,它用於創建傳遞給它的表。
public class ResultTable extends AbstractTableModel {
private ArrayList<ArrayList<String>> data;
public ResultTable(ArrayList<ArrayList<String>> data) {
this.data = data;
}
public int getColumnCount() {
return data.get(0).size();
}
public int getRowCount() {
return data.size();
}
public Object getValueAt(int row, int col) {
return data.get(row).get(col);
}
}
現在的問題是在ResultTable類,現在選擇查詢返回一行12列,第一data.get(0).size()調用正確返回12,但第二個數據.size()調用錯誤地返回12而不是1,這是導致出界錯誤,任何人都可以請解釋這看似矛盾的結果?
爲什麼你認爲'data.size()'應該返回'1'?你已經添加了相同數量的'ArrayList'作爲字符串的數量到內部'ArrayList' –