为什么Java DefaultTableModel使用Vector?

use*_*309 8 java swing jtable tablemodel

我知道我们必须使用AWT线程进行所有表模型更新操作.在单个AWT线程下,任何表模型都是线程安全的.为什么DefaultTableModel选择线程安全的Vector作为其数据结构,这比其他数据结构如ArrayList慢?

Jon*_*eet 7

Swing首先出现在Java 1.2之前,所以之前ArrayList可用.不幸的是,API DefaultTableModel 暴露了它使用的事实Vector,因此现在改变它将是向后不兼容的.

这正是仔细考虑封装的原因 - 它可以让您稍后更改内部.(不可否认,正确的序列化将是有趣的,但这是另一天的故事...)


Tom*_*ine 5

Swing可用于Java 1.1,但不包含在Java 1.1中.List/ ArrayList在1.2中介绍.可惜,因为在锁定API之前,Swing可能需要一些额外的时间.