HashSet 在此实例中是否为性能提供任何附加值?

Does HashSet Provide Any Added Value to Performance in This Instance?

因此,我正在使用 Java 中的现有方法,即 returns 列表 (ArrayList)。但是,我想为它添加一些功能,以便如果指定,它将排除某个对象。现在我明白了,通常在 HashSet 上使用 contains() 会产生比 ArrayList 更好的性能,但我想知道在我下面的代码的两个变体中是否有合理的性能提升:

注意:listOfAccounts 是从 DAO 调用返回的 ArrayList。 personalAccount 是 Account 类型的对象。

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 并查看您的元素是否包含在其中,而不是执行所有这些操作。如果是,那么您可以将其删除(这实际上是您第二个片段所做的)。

出于这个原因,第二个片段是首选,因为它们都 运行 在线性时间内。