我的 TableModel
实现通常位于 ArrayList
上,以实现高效的随机访问性能。但是,ArrayList
的 remove(int)
实现看起来相当低效,因为它涉及到调用 System.arrayCopy(...)
来进行 shift所有后续元素都减 1。
人们采用什么方法来实现 TableModel
?我应该考虑更好的数据结构吗? ...也许是第三方库?
更多信息:我的表数据可以收缩和增长,因此任何固定大小的缓冲区实现都不起作用。
提前致谢。
最佳答案
你的问题充满了“过早优化”的味道。
在我的计算机上,System.arrayCopy()
可以复制 1 million elements of data in roughly 13ms 。所以我建议衡量这是否真的是一个问题。一般情况下,ArrayList 比任何其他类似的数据结构更快并且具有更好的内存性能。
使用 LinkedList
会使列表上的所有操作(包括 remove()
)变慢,因为您现在必须为每个操作遍历所有列表元素的一半(一般)。因此大多数操作都会从 O(1) 变为 O(N/2)。
关于java - 高效的 TableModel 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1192586/