在tomcat代码中为何大量使用对象数组,在对象增加和删除时需要迭代,为何不用list?

是这样的,想请教下,在tomcat代码中为何大量使用对象数组,在对象增加和删除时需要迭代,为何不用list?
最新回答
‖葙対兂訁°

2024-09-20 06:24:21

你永远记住,数组是效率最高的,能用数组解决的,尽量不用list。
森屿微央

2024-09-20 00:57:14

在tomcat中有很多这样的代码 :
Connector results[] = new Connector[connectors.length + 1];
System.arraycopy(connectors, 0, results, 0, connectors.length);
results[connectors.length] = connector;
connectors = results;

数组拷贝并把新的数组赋给当前的数组,从而间接实现了动态数组。之所以使用数组我想可能是出于性能的考虑吧!

怎么理解上面的是出于性能的考虑,下面是我自己的一些思考。
这个性能应该是从空间占用上去考虑,因为Tomcat没有一开始就分配一个固定大小的数组,而是采用这种动态数组的实现。需要的时候在去分配,最大程度上利用空间。

从实现方便的角度也可以使用List实现,List本质也是数组,如果使用List的ArrayList 的话,默认空间大小为10!可以看ArrayList的源码!
/**
* Default initial capacity. (JDK1.7)
*/
private static final int DEFAULT_CAPACITY = 10;
那么这样如果没有任何元素添加,也会占用这么长的空间,内存使用率下降,则性能就会降低!