2024.11.19

设计模式实验十八

软件设计                  石家庄铁道大学信息学院

 

实验18:迭代器模式

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

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

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

 
   

 

 

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

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

实验要求:

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

Java 常见数据结构及迭代器

1. Vector是一个动态数组,可以存储对象,支持线程安全(已过时,推荐用 ArrayList

2. List (ArrayList, LinkedList)

ArrayList:动态数组,支持快速随机访问。

LinkedList:双向链表,适合频繁插入、删除。

3. Map (HashMap, TreeMap)

HashMap:基于哈希表,允许 null 键和 null 值。

TreeMap:基于红黑树,按键值排序。

4. Set (HashSet, TreeSet)

HashSet:基于哈希表,元素无序且不重复。

TreeSet:基于红黑树,元素有序。

C++ 常见数据结构及迭代器

C++ 提供的容器主要在 STL (Standard Template Library) 中:

1.Vector动态数组,支持随机访问。

2. List:双向链表,适合插入、删除操作。

3. Map:键值对,基于红黑树,键有序。

Unordered_Map:哈希表实现,键无序。

4. Set:红黑树实现,无重复元素。

Unordered_Set:哈希表实现,元素无序。

2. 提交源代码;

import java.util.*;

 

class Student {

    String name;

    String studentId;

    int age;

 

    public Student(String name, String studentId, int age) {

        this.name = name;

        this.studentId = studentId;

        this.age = age;

    }

 

    @Override

    public String toString() {

        return "Student{name='" + name + "', studentId='" + studentId + "', age=" + age + '}';

    }

}

 

public class StudentIterator {

    public static void main(String[] args) {

        List<Student> students = new ArrayList<>();

        // 初始化学生数据

        students.add(new Student("Alice", "1305001", 20));

        students.add(new Student("Bob", "1305003", 21));

        students.add(new Student("Charlie", "1305002", 22));

 

        // 按学号升序排序

        students.sort(Comparator.comparing(s -> s.studentId));

        System.out.println("按学号升序:");

        for (Student student : students) {

            System.out.println(student);

        }

 

        // 按学号降序排序

        students.sort((s1, s2) -> s2.studentId.compareTo(s1.studentId));

        System.out.println("\n按学号降序:");

        for (Student student : students) {

            System.out.println(student);

        }

    }

}

3. 注意编程规范。

 

 

posted @ 2024-12-25 10:05  cvjj  阅读(16)  评论(0)    收藏  举报