用于保持索引自动更新的容器是什么?

时间:2012-06-26 08:47:47

标签: java swing collections indexing tablemodel

以下情况:我需要一个带有rowindex数据的容器。目前我们在tablemodels中使用普通的ArrayList并手动更新tablerownumbers(使用疯狂算法,在添加,删除,移动该容器内的数据后保持更新。

在找到更新这些表格的第三个错误后,我想到最后使用一个不同的容器来自动更新它们。我的第一个想法是使用LinkedList。我唯一不喜欢的是,在LinkedList中我不能移动项目而不删除/读取它们,但仍然看起来令人满意。

Rowheader本身是一个自己的表,需要针对每个事件进行更新,以保持同步。

RowHeader Example

只是想知道,如果你能推荐替代品。所以我很好奇你会用什么样的容器?

感谢, ymene

1 个答案:

答案 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)。