Java 用于重置对象的更好arraylist性能选项

Java 用于重置对象的更好arraylist性能选项,java,performance,arraylist,Java,Performance,Arraylist,在Java arrayList中,我有两个不同的列表用于同一类TGrid。一个有大约1000个元素,另一个有10个元素。 现在在我的功能中,我必须根据if/else条件重置一些元素 在这里,我有两个选项来执行相同的操作,但是我需要知道哪一个对性能更有利 类别: public class TGrid{ private String pType; private boolean one ; private boolean one6; private boolean

在Java arrayList中,我有两个不同的列表用于同一类
TGrid
。一个有大约1000个元素,另一个有10个元素。
现在在我的功能中,我必须根据if/else条件重置一些元素
在这里,我有两个选项来执行相同的操作,但是我需要知道哪一个对性能更有利

类别:

public class TGrid{

    private String pType;
    private boolean one ;
    private boolean one6;
    private boolean one7;
    private boolean three2;

    getter --- setter
}
现在在功能中,重置对象

备选案文1:

tGridList.get(count).setPType("");
tGridList.get(count).setOne(false);
tGridList.get(count).setOne6(false);
tGridList.get(count).setOne7(false);
tGridList.get(count).setThree2(false);
备选案文2:

tGridList.set(count, new TGrid());

问题:哪个选项会提供更好的性能?

I假设第一个选项更快。在这两个选项中,您都可以设置值。在第一个选项中,它是显式完成的,在第二个选项中,它是在创建对象后由构造函数隐式完成的。所以第一个选项和第二个选项之间的主要区别是第二个选项的构造函数调用。因此,我认为这额外的工作将导致第二个选项的性能下降


但是,为了获得可靠的结果,您必须进行一些性能测试。

第一种选择可能是随着时间的推移速度更快。你应该把它改写成

TGrid t = tGridList.get(count);
t.setPType("");
t.setOne(false);
t.setOne6(false);
t.setOne7(false);
t.setThree2(false);
甚至在TGrid中引入clear()方法

与第二个选项相比,这不会遇到阻塞问题。第二次的新调用可以在内存紧张的情况下停止整个VM


坏的一面是您更改了实例,这意味着您必须注意同步。其中“关心”包括主动忽略它;)

这些选项与给定的不兼容。也许您应该将option1中的第一行重写为tGridList.get(count).setPType(null);我不必清除所有列表。只需将其中一些重置为require@cybye没关系。现在对我来说可能不太重要了