我目前正在使用Java,因此我更有兴趣知道在效率方面是否更好地插入它。虽然我也很好奇,如果这是一个不好的做法。
答案 0 :(得分:3)
没有必要。 API会告诉您它是否已经存在(如果您需要知道),并且集合代码非常有效 - 比自己检查它更有效率。
仅供参考,这是实际使用的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
这是“不好的做法”,因为套装也无论如何都要检查它。您只需将新元素的工作量加倍,同时保持现有元素的工作量。
答案 1 :(得分:1)
没必要。 Set.add()会检查你。
根据元素是否被添加,它也会返回true或false。
答案 2 :(得分:1)
一般来说,插入元素更有效。对于正常的Set
实现,插入代码几乎与contains
调用的工作重复,因为它需要替换已存在的值。因此,首先调用contains
通常浪费时间,并且通常是不良做法。
但并不总是!
如果您不希望 contains
调用来替换集合中的现有值,则应调用add
的一种情况。偶尔会出现这种情况;例如如果您使用该集来规范化一堆值。