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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一诺千金 中级黑马   /  2014-3-4 09:44  /  677 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Iterator it=set.iterator();
        while(it.hasNext())
        {
                //student stu=(student) it.next();//让集合遍历的元素去取元素自己的值
                System.out.println(((student)it.next()).getName()+""+((student)it.next()).getAge()+""+((student)it.next()).getFenshu());
        }

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

3 个回复

倒序浏览
System.out.println(((student)it.next()).getName()+""+((student)it.next()).getAge()+""+((student)it.next()).getFenshu());中连续使用三次it.next(),每使用一次it.next(),迭代器都会自动指向下一个元素,
如果((student)it.next()).getName()是获取的第一个元素的姓名
那么((student)it.next()).getAge() 获取的是第二个元素的age
((student)it.next()).getFenshu()是第三个元素的分数,
另外当it.hasNext()已经指向倒数第二位元素是,((student)it.next()).getFenshu()将没有对应的元素

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
这样只有个数是3的位数才行吧 而且获取的不是一个人的 第一人的名第二人的年龄第三人的分数
回复 使用道具 举报
你这样取没有问题的,但是取出来的不是你想要的,先看代码我说明
Student.java
  1. public class Student {
  2.         private String name;
  3.         private int age;
  4.         private float score;

  5.         public Student(String name, int age, float score) {
  6.                 this.name = name;
  7.                 this.age = age;
  8.                 this.score = score;
  9.         }

  10.         public String getName() {
  11.                 return name;
  12.         }

  13.         public int getAge() {
  14.                 return age;
  15.         }

  16.         public float getScore() {
  17.                 return score;
  18.         }

  19.         public void setName(String name) {
  20.                 this.name = name;
  21.         }

  22.         public void setAge(int age) {
  23.                 this.age = age;
  24.         }

  25.         public void setScore(float score) {
  26.                 this.score = score;
  27.         }
  28. }
复制代码

IteratorDemo.java
  1. import java.util.*;
  2. public class IteratorDemo {
  3.         public static void main(String[] args) {
  4.                 Set<Student> set = new HashSet<Student>();
  5.                 set.add(new Student("Zhangsan", 20, 85f));
  6.                 set.add(new Student("Lisi", 22, 90f));
  7.                 set.add(new Student("Wangwu", 19, 87f));

  8.                 for (Iterator<Student> it = set.iterator(); it.hasNext(); ) {
  9.                         // Student student = it.next();
  10.                         // System.out.println(student.getName());
  11.                         System.out.println(it.next().getName() + " : " + it.next().getAge() + " : " + it.next().getScore());
  12.                 }
  13.         }
  14. }
复制代码

我存入zhangsan , lisi, wangwu 后取出的顺序是wangwu,zhangsan,lisi
通过你的方式区的时候输出是:
getName() = wangwu
getAge() = 是zhangsan的年龄
getScore() = 是lisi的成绩
也就是说每一次it.next()的时候,都会取到下一个元素,这就是个问题了,最好通过我注释的方式。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马