Set<Type> union = new HashSet<Type>(s1);
Run Code Online (Sandbox Code Playgroud)
和
Set<Type> union = new HashSet<Type>();
Set<Type> s1 = new HashSet<Type>();
union.addAll(s1);
Run Code Online (Sandbox Code Playgroud)
假设Set s1在第一个和第二个例子中包含相同的内容,最终结果应该是相同的.
(但是,第二个示例不会编译,因为a Set是接口而不是具体类.)
使用HashSet(Collection)构造函数的一个优点是它的初始容量足以容纳传递给构造函数的Collection(在本例中为Set s1):
构造一个包含指定集合中元素的新集合.的
HashMap与默认负载因数(0.75)和初始容量足以容纳指定集合中的元素创建的.
但是,使用HashSet()构造函数时,初始大小为16,因此如果Set通过Collection.addAll大于16 添加的大小,则必须调整数据结构的大小:
构造一个新的空集; 后备
HashMap实例具有默认初始容量(16)和加载因子(0.75).
因此,在性能和效率方面,使用HashSet(Collection)构造函数创建HashSet可能是更好的选择.
但是,从代码的可读性的角度来看,变量名union似乎暗示新创建的Set是另一个的并集Set,因此使用该addAll方法的那个可能是更易理解的代码.
如果想法只是Set从现有的创建一个新的,那么新创建的Set应该可能以不同的名称命名,例如newSet,copyOfS1或者那种效果.
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |