我如何迭代一个集/HashSet没有以下?

Iterator iter = set.iterator();
while (iter.hasNext()) {
    System.out.println(iter.next());
}

有了一个列表,你可以做:

list.AddRange(otherCollection);

HashSet中没有add range方法。 向HashSet中添加另一个ICollection的最佳方法是什么?

HashSet c# HashSet数据结构在. net Framework 3.5中引入。实现成员的完整列表可以在HashSet MSDN页面上找到。

在哪里使用? 你为什么要用它?

我一直很喜欢树,O(n*log(n))和它们的整洁。然而,我所认识的每个软件工程师都尖锐地问过我为什么要使用TreeSet。从CS的背景来看,我不认为你使用什么很重要,我也不关心在哈希函数和桶(在Java的情况下)上搞得一团糟。

在哪些情况下,我应该在树集上使用HashSet ?

HashSet基于HashMap。

如果我们查看HashSet<E>实现,所有内容都在HashMap<E,Object>下管理。

<E>用作HashMap的键。

我们知道HashMap不是线程安全的。这就是为什么我们在Java中有ConcurrentHashMap。

基于此,我很困惑,为什么我们没有一个应该基于ConcurrentHashMap的ConcurrentHashSet ?

我还遗漏了什么吗?我需要在多线程环境中使用Set。

此外,如果我想创建自己的ConcurrentHashSet,我可以通过将HashMap替换为ConcurrentHashMap并保留其余部分来实现它吗?

我需要创建一个具有初始值的集合。

Set<String> h = new HashSet<String>();
h.add("a");
h.add("b");

是否有一种方法可以在一行代码中做到这一点?例如,它对于最终的静态字段很有用。