我最近浏览了tomcat的源代码,我发现在LifecycleSupport.java类中,它通过简单数组存储Listeners,
private LifecycleListener listeners[] = new LifecycleListener[0];
所以add()方法必须创建一个新数组来替换旧数组:
public void addLifecycleListener(LifecycleListener listener) {
82
83 synchronized (listenersLock) {
84 LifecycleListener results[] =
85 new LifecycleListener[listeners.length + 1];
86 for (int i = 0; i < listeners.length; i++)
87 results[i] = listeners[i];
88 results[listeners.length] = listener;
89 listeners = results;
90 }
91
92 }
我想知道使用数组而不是像ArrayList这样的高级java容器的目的是什么,因为它更方便执行添加/删除操作?
由于
答案 0 :(得分:0)
根据我的说法,他们必须为旧版本的java提供 向后兼容性 ,以便旧的jre / jdk对Tomcat感到满意。否则没有其他理由可以使用数组,但还有一件事要注意ArrayList
内部操纵数组,所以没有任何改进。但请注意,它显而易见array[index]
比array.get(index)
更快。