import java.util.*;
public class TestHashSet 
{
public static void main(String [] args)
{
Set<String> set = new HashSet<String>();
set.add("London");
set.add("Paris");
set.add("New York");
set.add("San Francisco");
set.add("Beijing");
set.add("New York");
System.out.println(set);

Iterator iterator = set.iterator();
while(iterator.hasNext())
{
System.out.println(iterator.next()+ " ");
}
}
}
System.out.println(set) 为什么这句输出[San Francisco, New York, Paris, Beijing, London]
直接用 set 作参数输出就可以把他的内容显示出来 都不用迭代 好像有点难理解

解决方案 »

  1.   

    System.out.println(set) 会调用 hashset 的 toString() 方法:代码如下:
     public String toString() {
    StringBuffer buf = new StringBuffer();
    buf.append("[");        Iterator<E> i = iterator();
            boolean hasNext = i.hasNext();
            while (hasNext) {
                E o = i.next();
                buf.append(o == this ? "(this Collection)" : String.valueOf(o));
                hasNext = i.hasNext();
                if (hasNext)
                    buf.append(", ");
            } buf.append("]");
    return buf.toString();
        }
      

  2.   

    Object类具有一个toString()方法,你创建的每个类都会继承该方法。它返回对象的一个String表示,并且对于调试非常有帮助
      

  3.   

    这里说的是 java.util.AbstractCollection<E> 的 toString() 方法。hashset 是它的子类。
      

  4.   

    java.util.AbstractCollection <E> 
    这个E是什么 意思啊  麻烦你解释一下给我听 
    好吗 谢谢啦
      

  5.   

    楼主可以看看这个文章:
    http://en.wikipedia.org/wiki/Generics_in_Java简单的理解就是:
    如果你想往hashset里放string, 你就把那个E换成string, 如果你想放int, 就换int.
      

  6.   

    Collection中是不能放入int ,float等基本类型的.
      

  7.   

    知道,可放入它们的对应形式, 如 Interger, Float。
      

  8.   

    7楼说Collection中是不能放入int ,float等基本类型的.
    但是java支持自动拆箱,不是就可以 了吗?