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

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

什么时候应该使用字典、列表或集合?

是否存在更适合每种数据类型的场景?

我有一个集合列表:

setlist = [s1,s2,s3...]

我想要s1∩s2∩s3…

我可以写一个函数,通过执行一系列成对的s1.intersection(s2),等等。

是否有推荐的、更好的或内置的方法?

如何将值列表添加到现有集?

我想知道我是否能得到一个列表或集合的第一个元素。使用哪种方法?

为什么Set不提供获取与另一个元素相等的元素的操作?

Set<Foo> set = ...;
...
Foo foo = new Foo(1, 2, 3);
Foo bar = set.get(foo);   // get the Foo element from the Set that equals foo

我可以问Set是否包含一个等于bar的元素,那么为什么我不能得到那个元素呢?:(

为了澄清,equals方法被重写,但它只检查其中一个字段,而不是所有字段。两个相等的Foo对象可以有不同的值,这就是为什么我不能只用Foo。

如何检查一个元素是否在集合中?

是否有与以下代码更简单的等效代码:

myset.find(x) != myset.end()

Set<E>接口和List<E>接口的根本区别是什么?

有人知道c#中是否有类似于Java的Set集合的好方法吗?我知道您可以使用Dictionary或HashTable来填充但忽略值,从而在某种程度上模拟一个集合,但这不是一种非常优雅的方式。