在Java中有效地对多个arraylists执行操作

时间:2014-11-04 02:39:58

标签: java performance arraylist

我在ArrayList中有双打的ArrayLists。所以它就是这样的

ArrayList<ArrayList<Double>> x = new ArrayList<ArrayList<Double>>();

我的x中有19个ArrayLists。我有一个名为distance(ArrayList x, ArrayList y)的方法,用于计算ArrayLists xy之间的距离并返回double。我想计算每个矢量和所有其他矢量之间的距离。

我的方法是做以下

for(int i=0 ; i<(x.size()-1) ; i++)
    {
        for(int j=(i+1) ; j<x.size() ; j++)
        {
            System.out.println(distance( x.get(i) , x.get(j) ));
        }
    }

然而,它看起来效率不高。效率为O(N ^ 2)。 效率对我来说非常重要。我需要帮助来确定执行此操作的 MOST 有效方法是什么。

1 个答案:

答案 0 :(得分:-2)

如果性能命中来自distance(x,y)的算法并且无论如何都无法对其进行优化,为什么不首先尝试缓存给定对(x,y)的距离结果?如果您这样做,请同时考虑distance(x,y) == distance(y,x)

的情况

此外,预先计算x.size()并存储它可能会为您节省一些处理。