我目前正在使用Java,所以我更感兴趣的是知道在效率方面插入它会更好。虽然我也很好奇,如果这是一个不好的做法。一般来说,我应该在插入前检查一个元素是否在一个集合中?
1
A
回答
3
没有必要。 API告诉你它是否已经存在(如果你需要知道的话),并且Collections代码非常高效 - 比自己检查它更麻烦。
仅供参考,这里是这个API:
Set<Integer> set = new HashSet<Integer>();
boolean newAdditionToSet = set.add(1);
System.out.println(newAdditionToSet); // true
newAdditionToSet = set.add(1);
System.out.println(newAdditionToSet); // false
这是 “不好的做法”,因为该Set 也无论如何检查它。您只需将新元素的工作量加倍,同时保持现有元素的工作量。
1
没有必要。 Set.add()会检查你。
根据是否添加该元素,它也会返回true或false。
1
一般来说,插入元素更有效率。对于正常的Set
实现,插入代码几乎复制了contains
调用的工作,因为它需要替换值,如果它已经存在。所以打电话contains
首先是一般浪费时间,并且是一般不好的做法。
但并非总是如此!
一个情况下,你应该叫contains
是,如果你不想的add
调用替换集中的现有价值。这种情况偶尔会出现;例如如果你正在使用该集来规范化一堆值。
相关问题
- 1. 检查一个元素是否在jQuery集合中
- 2. 在删除它之前,我应该检查一个对象是否存在于一个集合中?
- 3. 检查是否在一个jQuery集合
- 4. 检查一个元素是否存在
- 5. 检查一个集合中是否存在一个对象(T)
- 6. 如何检查一个属性是否在一个元素中?
- 7. 检查一个结构中是否存在一个元素C
- 8. NUnit声明一个集合,检查是否存在一个值
- 9. 在插入或插入异常之前,我应该检查一个键是否存在?
- 10. 在mongo中插入其他集合之前,如何检查一个集合中是否有可用的东西?
- 11. 我如何检查一个元素在php中是否可见?
- 12. 可以检查一个集合或子集合是否存在?
- 13. 我应该在删除之前检查一行是否存在?
- 14. 如何遍历元素集并检查每个元素是否在加载之前转到下一个元素?
- 15. 如何检查一个集合中某个_id的一部分是否出现在另一个集合中
- 16. 在我将一个函数绑定到它之前,我应该测试一个目标元素是否存在?
- 17. 我应该使用每个集合还是几个集合来发布一个?
- 18. 在另一个jQuery之前插入一个HTML元素
- 19. 检查元素是否是选中的最后一个元素
- 20. jQuery检查一个元素是否集中
- 21. 检查是否在一个列表中的所有元素都在另一个
- 22. 检查两个集合中是否存在任何元素
- 23. tvOS检查当前是否聚焦ui元素是一个CollectionViewCell
- 24. Laravel检查一个集合是否包含一个外键
- 25. 检查一个集合是否至少包含一个文档
- 26. 在创建之前检查Firestore中是否存在一个集合
- 27. 确定当前元素是集合的最后一个元素?
- 28. Julia:检查一个向量中的元素是否在另一个向量中
- 29. 检查一个值是否在与LINQ的集合中
- 30. 检查一个对象是否在Groovy集合中
它没有语义上的差异,它没有任何理由给它带来任何性能上的好处,它是两行冗余的代码。你怎么看? – delnan