A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Johnny_Hu 于 2015-4-7 22:19 编辑
  1. import java.util.HashSet;
  2. import java.util.Iterator;
  3. public class HashSetDemo1 {

  4.         public static void main(String[] args)
  5.         {        
  6.                 HashSet hs = new HashSet();
  7.                 hs.add("Java01");
  8.                 hs.add("Java02");
  9.                 hs.add("Java03");
  10.                 hs.add("Java04");
  11.                 System.out.print(hs);//普通输出
  12.                 System.out.println();
  13.                 System.out.println("-----------------");
  14.                 for(Iterator it = hs.iterator(); it.hasNext();)
  15.                 {
  16.                         Object obj = it.next();
  17.                         System.out.print(obj+" ");//迭代器输出
  18.                 }
  19.         }
  20. }
复制代码
输出结果是[Java02, Java03, Java04, Java01]//普通输出
-----------------
Java02 Java03 Java04 Java01 //迭代器输出



5 个回复

倒序浏览
普通输出是调用了HashSet的toString方法,该方法只是返回该集合的字符串表示形式,并不能对集合的元素进行操作。而迭代器输出是将集合中的元素一个一个打印出来,每个元素都会被访问到,这样就可以针对每个元素进行操作,比如判断取出删除等
回复 使用道具 举报
陈佳 发表于 2015-4-8 16:17
普通输出是调用了HashSet的toString方法,该方法只是返回该集合的字符串表示形式,并不能对集合的元素进行 ...

那也就说  要是普通的输出用不着用迭代器输出对吗?
回复 使用道具 举报
Johnny_Hu 发表于 2015-4-8 19:27
那也就说  要是普通的输出用不着用迭代器输出对吗?

普通输出的底层代码原理就是使用了迭代器。以下是HashSet的父类AbstractCollection里toString方法的源代码:
  1. public String toString() {
  2.         Iterator<E> it = iterator();
  3.         if (! it.hasNext())
  4.             return "[]";

  5.         StringBuilder sb = new StringBuilder();
  6.         sb.append('[');
  7.         for (;;) {
  8.             E e = it.next();
  9.             sb.append(e == this ? "(this Collection)" : e);
  10.             if (! it.hasNext())
  11.                 return sb.append(']').toString();
  12.             sb.append(',').append(' ');
  13.         }
  14.     }
复制代码
回复 使用道具 举报
陈佳 发表于 2015-4-9 07:57
普通输出的底层代码原理就是使用了迭代器。以下是HashSet的父类AbstractCollection里toString方法的源代 ...

理解的够深,牛人
回复 使用道具 举报
学习了,问题不错!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马