10.22

实验18:迭代器模式

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

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

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

 

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

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

实验要求:

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

2. 提交源代码;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;

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 "姓名: " + name + ", 学号: " + studentId + ", 年龄: " + age;
}
}

public class StudentInfo {
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<>();

// 假设我们添加44名同学的信息
students.add(new Student("张三", "1305001", 20));
students.add(new Student("李四", "1305002", 21));
// ... 继续添加其他学生的信息

// 按学号从小到大排序
Collections.sort(students, Comparator.comparing(student -> student.studentId));

System.out.println("按学号从小到大排序:");
Iterator<Student> iterator = students.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}

// 按学号从大到小排序
Collections.sort(students, Comparator.comparing(Student::getStudentId).reversed());

System.out.println("按学号从大到小排序:");
iterator = students.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}

 

 

#include <iostream>  
#include <vector>  
#include <algorithm>  
#include <string>  

class Student {
public:
    std::string name;
std::string studentId;
int age;

Student(std::string n, std::string id, int a) : name(n), studentId(id), age(a) {}
};

int main() {
    std::vector<Student> students;

// 假设我们添加44名同学的信息
students.emplace_back("张三", "1305001", 20);
students.emplace_back("李四", "1305002", 21);
// ... 继续添加其他学生的信息

       // 按学号从小到大排序
std::sort(students.begin(), students.end(), [](const Student& a, const Student& b) {
return a.studentId < b.studentId;
});

std::cout << "按学号从小到大排序:\n";
for (const auto& student : students) {
    std::cout << "姓名: " << student.name << ", 学号: " << student.studentId << ", 年龄: " << student.age << std::endl;
}

// 按学号从大到小排序
std::sort(students.begin(), students.end(), [](const Student& a, const Student& b) {
return a.studentId > b.studentId;
});

std::cout << "按学号从大到小排序:\n";
for (const auto& student : students) {
    std::cout << "姓名: " << student.name << ", 学号: " << student.studentId << ", 年龄: " << student.age << std::endl;
}

return 0;
}

 

3. 注意编程规范。

 

 

posted @ 2024-11-27 08:20  The-rich  阅读(13)  评论(0)    收藏  举报