我目前正在使用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