因此,我正在使用Java中现有的方法来返回列表(ArrayList)。但是,我想为其添加一些功能,以便在指定时将排除某个对象。现在我了解到,通常在HashSet上使用contains()会比ArrayList产生更好的性能,但是我想知道下面的两种代码版本是否有合理的性能提升:
注意:listOfAccounts是从DAO调用返回的ArrayList。 personalAccount是帐户类型的对象。
if (excludePersonalAccount) {
Set<Account> accounts = new HashSet<Account>(listOfAccounts);
if (accounts.contains(personalAccount) {
listOfAccounts.remove(personalAccount);
}
}
VS
if (excludePersonalAccount) {
listOfAccounts.remove(personalAccount)
}
最佳答案
Set<Account> accounts = new HashSet<Account>(listOfAccounts);
上一行采用
ArrayList
的所有元素,并将其添加到HashSet
。您可以遍历List
并查看是否在其中包含您的元素,而不是执行所有这些操作。如果是这样,则可以将其删除(这实际上是您的第二个片段所执行的操作)。因此,第二个代码段是首选,因为它们都以线性时间运行。