今日收获

实验18:迭代器模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 

1、理解迭代器模式的动机,掌握该模式的结构;

2、能够利用迭代器模式解决实际问题。

 

[实验任务一]JAVAC++常见数据结构迭代器的使用

1305班共44名同学,每名同学都有姓名,学号和年龄等属性,分别使用JAVA内置迭代器和C++中标准模板库(STL)实现对同学信息的遍历,要求按照学号从小到大和从大到小两种次序输出学生信息。

 

package shiyan18;

public class Gj19Client {
    public static void main(String[] args) {
        Gj19JavaIterator gj19JavaIterator= new Gj19JavaIterator();
        gj19JavaIterator.display();
    }
}

 

package shiyan18;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class Gj19JavaIterator {
    List<Gj19Student> slist=null;
    public Gj19JavaIterator(){
        Gj19Student[] stu=new Gj19Student[5];
        slist=new ArrayList<Gj19Student>();
        stu[0]=new Gj19Student("张大", 32);
        stu[1]=new Gj19Student("陈二", 25);
        stu[2]=new Gj19Student("王五", 21);
        stu[3]=new Gj19Student("刘六", 38);
        stu[4]=new Gj19Student("王八", 26);
        for(int i=0;i<5;i++){
            slist.add(stu[i]);
        }
    }
    public void display(){
        Iterator<Gj19Student> t=slist.iterator();
        System.out.println("遍历获得的原始数据:");
        while(t.hasNext()){
            Gj19Student student=t.next();
            System.out.println("姓名:"+student.getName()+"今年"+student.getAge()+"岁");
        }
        Collections.sort(slist);
        Iterator<Gj19Student> it=slist.iterator();
        System.out.println("========================================");
        System.out.println("按年龄从大到小排序:");
        while(it.hasNext()){
            Gj19Student student=it.next();
            System.out.println("姓名:"+student.getName()+"今年"+student.getAge()+"岁");
        }
    }

}
package shiyan18;

public class Gj19Student implements Comparable<Gj19Student>{
    private String name;
    private int age;
    public Gj19Student(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public int compareTo(Gj19Student stu){
        if(this.age > stu.age){
            return -1;
        }else if(this.age < stu.age){
            return 1;
        }
        return 0;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

 

posted @ 2021-11-09 19:57  敲敲代代码码  阅读(118)  评论(0编辑  收藏  举报