以下情况:我需要一个带有rowindex数据的容器。目前我们在tablemodels中使用普通的ArrayList并手动更新tablerownumbers(使用疯狂算法,在添加,删除,移动该容器内的数据后保持更新。
在找到更新这些表格的第三个错误后,我想到最后使用一个不同的容器来自动更新它们。我的第一个想法是使用LinkedList。我唯一不喜欢的是,在LinkedList中我不能移动项目而不删除/读取它们,但仍然看起来令人满意。
Rowheader本身是一个自己的表,需要针对每个事件进行更新,以保持同步。
只是想知道,如果你能推荐替代品。所以我很好奇你会用什么样的容器?
感谢, ymene
答案 0 :(得分:2)
我不确定我完全理解这个问题。但是假设你有一个List<Person>
,并且你需要一个显示行号,人名和人姓的表,你不需要在Person中甚至在列表中的任何索引来做那个:
public class PersonTableModel extends AbstractTableModel {
private List<Person> persons;
public int getRowCount() {
return persons.size();
}
public int getColumnCount() {
return 3;
}
public Object getValueAt(int row, int col) {
if (col == 0) {
return row + 1;
}
else if (col == 1) {
return persons.get(row).getFirstName();
}
else {
return persons.get(row).getLastName();
}
}
...
}
ArrayList比LinkedList更有效,因为对于LinkedList,索引访问是O(1)而不是O(n)。