如何在另一个内部使用foreach有效地减少处理?

时间:2015-05-27 20:42:57

标签: java foreach process cpu-speed

根据以下代码,我必须通过从其他对象获取值来设置一个列表中的对象的值。由于减少了进程,我在设置值后从第二个列表中删除每个对象。这样做,第二个列表将减少每个循环以及CPU进程。我的想法是对的吗?我会减少一些流程吗?

for(Product product : _session.getProducts()){

    for(Product newProduct : _newSession.getProducts()){

        if(product.getID() == newProduct.getID()){

            product.setValue(newProduct.getValue());

            _newSession.getProducts().remove(newProduct);

            break;
        }

    }

}

1 个答案:

答案 0 :(得分:0)

我认为您无法衡量实际节省的CPU流程。理论上可能会有一些节省,也许如果名单很大。你应该寻找替代解决方案。 一种是使用Set而不是list,正确实现equals和hashCode for Product类。 Set实现的搜索算法非常快:O(log n)。并且实现equals非常简单,因为你只有一个属性可以区分对象ID。