1. package cn.itcast_03;
  2. public class Student {
  3. // 成员变量
  4. private String name;
  5. private int age;
  6. // 构造方法
  7. public Student() {
  8. super();
  9. }
  10. public Student(String name, int age) {
  11. super();
  12. this.name = name;
  13. this.age = age;
  14. }
  15. // 成员方法
  16. // getXxx()/setXxx()
  17. public String getName() {
  18. return name;
  19. }
  20. public void setName(String name) {
  21. this.name = name;
  22. }
  23. public int getAge() {
  24. return age;
  25. }
  26. public void setAge(int age) {
  27. this.age = age;
  28. }
  29. @Override
  30. public String toString() {
  31. return "Student [name=" + name + ", age=" + age + "]";
  32. }
  33. }
  1. package cn.itcast_03;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import java.util.Iterator;
  5. /*
  6. * 练习:用集合存储5个学生对象,并把学生对象进行遍历。用迭代器遍历。
  7. *
  8. * 注意:
  9. * A:自己的类名不要和我们学习的要使用的API中的类名相同。
  10. * B:复制代码的时候,很容易把那个类所在的包也导入过来,容易出现不能理解的问题。
  11. */
  12. public class IteratorTest {
  13. public static void main(String[] args) {
  14. // 创建集合对象
  15. Collection c = new ArrayList();
  16. // 创建学生对象
  17. Student s1 = new Student("林青霞", 27);
  18. Student s2 = new Student("风清扬", 30);
  19. Student s3 = new Student("令狐冲", 33);
  20. Student s4 = new Student("武鑫", 25);
  21. Student s5 = new Student("刘晓曲", 22);
  22. // 把学生添加到集合中
  23. c.add(s1);
  24. c.add(s2);
  25. c.add(s3);
  26. c.add(s4);
  27. c.add(s5);
  28. // 遍历
  29. Iterator it = c.iterator();
  30. while (it.hasNext()) {
  31. // System.out.println(it.next());
  32. Student s = (Student) it.next();
  33. System.out.println(s.getName() + "---" + s.getAge());
  34. }
  35. }
  36. }
  1. package cn.itcast_03;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import java.util.Iterator;
  5. /*
  6. * 问题1:能用while循环写这个程序,我能不能用for循环呢?
  7. * 问题2:不要多次使用it.next()方法,因为每次使用都是访问一个对象。
  8. */
  9. public class IteratorTest2 {
  10. public static void main(String[] args) {
  11. // 创建集合对象
  12. Collection c = new ArrayList();
  13. // 创建学生对象
  14. Student s1 = new Student("林青霞", 27);
  15. Student s2 = new Student("风清扬", 30);
  16. Student s3 = new Student("令狐冲", 33);
  17. Student s4 = new Student("武鑫", 25);
  18. Student s5 = new Student("刘晓曲", 22);
  19. // 把学生添加到集合中
  20. c.add(s1);
  21. c.add(s2);
  22. c.add(s3);
  23. c.add(s4);
  24. c.add(s5);
  25. // 遍历
  26. Iterator it = c.iterator();
  27. while (it.hasNext()) {
  28. Student s = (Student) it.next();
  29. System.out.println(s.getName() + "---" + s.getAge());
  30. // NoSuchElementException 不要多次使用it.next()方法
  31. // System.out.println(((Student) it.next()).getName() + "---"
  32. // + ((Student) it.next()).getAge());
  33. }
  34. // System.out.println("----------------------------------");
  35. // for循环改写
  36. // for(Iterator it = c.iterator();it.hasNext();){
  37. // Student s = (Student) it.next();
  38. // System.out.println(s.getName() + "---" + s.getAge());
  39. // }
  40. }
  41. }
  1. package cn.itcast_03;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import java.util.Iterator;
  5. /*
  6. * Iterator iterator():迭代器,集合的专用遍历方式
  7. * Object next():获取元素,并移动到下一个位置。
  8. * NoSuchElementException:没有这样的元素,因为你已经找到最后了。
  9. * boolean hasNext():如果仍有元素可以迭代,则返回 true。(
  10. */
  11. public class IteratorDemo {
  12. public static void main(String[] args) {
  13. // 创建集合对象
  14. Collection c = new ArrayList();
  15. // 创建并添加元素
  16. // String s = "hello";
  17. // c.add(s);
  18. c.add("hello");
  19. c.add("world");
  20. c.add("java");
  21. // Iterator iterator():迭代器,集合的专用遍历方式
  22. Iterator it = c.iterator(); // 实际返回的肯定是子类对象,这里是多态
  23. // Object obj = it.next();
  24. // System.out.println(obj);
  25. // System.out.println(it.next());
  26. // System.out.println(it.next());
  27. // System.out.println(it.next());
  28. // System.out.println(it.next());
  29. // 最后一个不应该写,所以,我们应该在每次获取前,如果有一个判断就好了
  30. // 判断是否有下一个元素,有就获取,没有就不搭理它
  31. // if (it.hasNext()) {
  32. // System.out.println(it.next());
  33. // }
  34. // if (it.hasNext()) {
  35. // System.out.println(it.next());
  36. // }
  37. // if (it.hasNext()) {
  38. // System.out.println(it.next());
  39. // }
  40. // if (it.hasNext()) {
  41. // System.out.println(it.next());
  42. // }
  43. // if (it.hasNext()) {
  44. // System.out.println(it.next());
  45. // }
  46. // 最终版代码
  47. while (it.hasNext()) {
  48. // System.out.println(it.next());
  49. String s = (String) it.next();
  50. System.out.println(s);
  51. }
  52. }
  53. }

迭代器源码如下:

  1. public interface Inteator {
  2. boolean hasNext();
  3. Object next();
  4. }
  5. public interface Iterable {
  6. Iterator iterator();
  7. }
  8. public interface Collection extends Iterable {
  9. Iterator iterator();
  10. }
  11. public interface List extends Collection {
  12. Iterator iterator();
  13. }
  14. public class ArrayList implements List {
  15. public Iterator iterator() {
  16. return new Itr();
  17. }
  18. private class Itr implements Iterator {
  19. public boolean hasNext() {}
  20. public Object next(){}
  21. }
  22. }
  23. Collection c = new ArrayList();
  24. c.add("hello");
  25. c.add("world");
  26. c.add("java");
  27. Iterator it = c.iterator(); //new Itr();
  28. while(it.hasNext()) {
  29. String s = (String)it.next();
  30. System.out.println(s);
  31. }

版权声明:本文为小平果原创文章,转载请注明:http://blog.csdn.net/i10630226

java之集合Collection详解之3的更多相关文章

  1. java之集合Collection 详解之4

    package cn.itcast_04; public class Student { private String name; private int age; public Student() ...

  2. java之集合Collection详解之2

    package cn.itcast_02; import java.util.ArrayList; import java.util.Collection; /* * 练习:用集合存储5个学生对象,并 ...

  3. Java.数据结构.集合体系详解

    I. 第一部分:常见数据结构 首先简单说下数据结构. 什么是数据结构?数据结构就是组织数据的方式. 常见的数据结构:栈,堆,树,图,数组,队列,链表. 这里主要介绍与java集合体系相关的栈.数组和链 ...

  4. java的集合框架详解

    前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作的方法. 在Java语言中,Jav ...

  5. Java Set集合的详解

    一,Set Set:注重独一无二的性质,该体系集合可以知道某物是否已近存在于集合中,不会存储重复的元素 用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复. 对象的相等性 引用到堆上同一个对象 ...

  6. java集合框架详解

    java集合框架详解 一.Collection和Collections直接的区别 Collection是在java.util包下面的接口,是集合框架层次的父接口.常用的继承该接口的有list和set. ...

  7. Java集合中List,Set以及Map等集合体系详解

    转载请注明出处:Java集合中List,Set以及Map等集合体系详解(史上最全) 概述: List , Set, Map都是接口,前两个继承至collection接口,Map为独立接口 Set下有H ...

  8. java并发编程 | 锁详解:AQS,Lock,ReentrantLock,ReentrantReadWriteLock

    原文:java并发编程 | 锁详解:AQS,Lock,ReentrantLock,ReentrantReadWriteLock 锁 锁是用来控制多个线程访问共享资源的方式,java中可以使用synch ...

  9. Java 8 Stream API详解--转

    原文地址:http://blog.csdn.net/chszs/article/details/47038607 Java 8 Stream API详解 一.Stream API介绍 Java8引入了 ...

随机推荐

  1. IP封包的封装 - 首部内容

    IP 封包的封装 目前因特网社会的 IP 有两种版本,一种是目前使用最广泛的 IPv4 (Internet Protocol version 4, 因特网协定第四版), 一种则是预期未来会热门的 IP ...

  2. iOS自定义多参数类型方法

    前几天做自定义UIAlertView的时候,想仿造系统自带的初始化方法做一个AlertView,里面涉及到不确定多参数的设置和使用问题.这里做一下记录. 我自定义了一个方法: - (instancet ...

  3. mac os x下的一些小技巧

    1显示swap空间: sysctl vm.swapusage 其中sysctl中有很多可以控制和查看的项,可以通过sysctl -A列举,另外可以通过man sysctl来查看. 而实际swap文件和 ...

  4. linux下shell中执行命令的顺序问题

    在shell中有很多种命令的同义词,到底先执行的是哪一个命令呢,我们可以借助type -a命令来检查. 为了测试我们就对type本身做一条alias: alias type=type 然后我们通过ty ...

  5. 【6】-BAT面试之操作系统内存详解

    本文主要参考两篇博客,读后整理出来,以供大家阅读,链接如下: http://blog.jobbole.com/95499/?hmsr=toutiao.io&utm_medium=toutiao ...

  6. MOOS学习笔记2——HelloWorld回调

    MOOS学习笔记2--HelloWorld回调 例程 #include "MOOS/libMOOS/Comms/MOOSAsyncCommClient.h" bool OnConn ...

  7. springMVC导出word模板

    controller 调用 @RequestMapping(value = "/exportWord") public void exportWord(HttpServletRes ...

  8. 排序算法入门之插入排序(java实现)

    插入排序思想:相当于插入元素,对于第i个元素,i之前的元素已经是有序的了,这时候将第i个元素依次与前面元素比较,插入合适的位置.

  9. 直接执行SQL语句的快捷键是什么啊?嘎嘎

    在查询中输入SQL语句后,执行语句的快捷键~ 分享到: 2009-10-23 10:59网友采纳 左键..嘿嘿,开个玩笑 你把鼠标移动到执行按钮上停一会就能看到了啊

  10. Java EE的未来

    http://www.infoq.com/cn/articles/enterprise-Java-opinion 作为InfoQ下一年编辑关注点审核工作的一部分,我们挑选了Java作为深入探讨的主题. ...