迭代器模式

发布时间 2024-01-03 23:26:38作者: Men!

实验18:迭代器模式

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

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

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

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

实验要求:

搜集并掌握JAVA和C++中常见的数据结构和迭代器的使用方法,例如vector, list, map和set等;

代码

import java.util.*;
 
class Student
{
    int id;
    String name;
    int age;
 
    public Student(int id, String name, int age)
    {
        this.id = id;
        this.name = name;
        this.age = age;
    }
}
 
public class List_Iterator
{
    public static void sortById(List list)
    {
        Iterator<Student> sIterator = list.iterator();
        while (sIterator.hasNext())
        {
            Student student = sIterator.next();
            System.out.println("学号: " + student.id + ", 姓名: " + student.name + ", 年龄: " + student.age);
        }
    }
 
    public static void main(String[] args)
    {
        List<Student> studentList = new ArrayList<>();
        studentList.add(new Student(20213971, "门殿宇", 20));
        studentList.add(new Student(20211234, "张三", 20));
        studentList.add(new Student(20214352, "李四", 20));
        studentList.add(new Student(20210123, "王五", 20));
        studentList.add(new Student(20214444, "小明", 20));
        studentList.add(new Student(20215423, "小李", 20));
        studentList.add(new Student(20217462, "小王", 20));
        studentList.add(new Student(20212344, "小张", 20));
        studentList.add(new Student(20213888, "小刘", 20));
        studentList.add(new Student(20219999, "小马", 20));
 
 
        //按学号升序排序
        Collections.sort(studentList, Comparator.comparingInt(student -> student.id));
 
        //用迭代器打印
        System.out.println("按学号升序:");
        sortById(studentList);
 
 
        Collections.reverse(studentList);
        //迭代器打印降序学号
        System.out.println("\n按学号降序:");
        sortById(studentList);
    }
}