虽然标题中有 Java,但这可能适用于任何 OO 语言。我想知道一些新想法来提高我正在尝试做的事情的性能。
我有一个不断接收 Object[] 数组的方法。我需要通过多个数组(列表或其他东西)拆分此数组中的对象,以便我为该方法接收的所有数组的每一列都有一个独立的列表。
例子:
List<List<Object>> column-oriented = new ArrayList<ArrayList<Object>>();
public void newObject(Object[] obj) {
for(int i = 0; i < obj.length; i++) {
column-oriented.get(i).add(obj[i]);
}
}
注意:为简单起见,我省略了对象和东西的初始化。
我上面显示的代码当然很慢。我已经尝试了一些其他的东西,但想听听一些新的想法。
知道它对性能非常敏感,您将如何做到这一点?
编辑:
我测试了一些东西,发现:
我没有使用 ArrayList(或任何其他集合),而是将 Object[] 数组包装在另一个对象中以存储各个列。如果此数组达到其容量,我将创建另一个大小为两倍的数组,并使用 System.copyArray 将内容从一个复制到另一个。令人惊讶的是(至少对我来说)这比使用 ArrayList 存储内列更快......