Java/C++实现迭代器模式---学生信息

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

Java代码:

public class Student implements Comparable<Student>{
     private int studentid;
        private String name;
        private int age;
        private String major;

        public Student(int studentid, String name, int age, String major) {
            super();
            this.studentid = studentid;
            this.name = name;
            this.age = age;
            this.major = major;
        }

        // 三个返回结果都要写出来
        public int compareTo(Student o) {
            if(this.studentid > o.studentid){
                return -1;
            }else if(this.studentid < o.studentid){
                return 1;
            }else {
                return 0;
            }
        }

        @Override
        public String toString(){
            return "姓名: " + this.name + ". 学号: " + this.studentid + ". 年龄: " + this.age
                    + ". 专业: " + this.major;
        }
}

public class Student2 implements Comparable<Student2>{
     private int studentid;
        private String name;
        private int age;
        private String major;

        public Student2(int studentid, String name, int age, String major) {
            super();
            this.studentid = studentid;
            this.name = name;
            this.age = age;
            this.major = major;
        }

        // 三个返回结果都要写出来
        public int compareTo(Student2 o) {
            if(this.studentid < o.studentid){
                return -1;
            }else if(this.studentid > o.studentid){
                return 1;
            }else {
                return 0;
            }
        }

        @Override
        public String toString(){
            return "姓名: " + this.name + ". 学号: " + this.studentid + ". 年龄: " + this.age
                    + ". 专业: " + this.major;
        }
}

public class Client {
    public static void main(String[] args) {
          Student s1 = new Student(20193250, "张雨轩", 19, "软件工程专业");
          Student s2 = new Student(20193999, "李四", 30, "材料专业");
          Student s3 = new Student(20196654, "王五", 29, "机械专业");
          Student s4 = new Student(20193367, "赵六", 34, "工商管理专业");
          Student s5 = new Student(20193396, "张三", 34, "土木专业");
          Student s6 = new Student(20193396, "孙七", 34, "电气专业");
          Student2 s7 = new Student2(20193250, "张雨轩", 19, "软件工程专业");
          Student2 s8 = new Student2(20193999, "李四", 30, "材料专业");
          Student2 s9 = new Student2(20196654, "王五", 29, "机械专业");
          Student2 s10 = new Student2(20193367, "赵六", 34, "工商管理专业");
          Student2 s11 = new Student2(20193396, "张三", 34, "土木专业");
          Student2 s12 = new Student2(20193396, "孙七", 34, "电气专业");
          List<Student> list = new ArrayList<Student>();
          list.add(s1);
          list.add(s2);
          list.add(s3);
          list.add(s4);
          list.add(s5);
          list.add(s6);
          Collections.sort(list);
          System.out.println("按照学号从大到小输出: ");
          for(Student stu : list){
              System.out.println(stu.toString());
          }
          System.out.println("-----------------------------------------------------------------");
          List<Student2> list2 = new ArrayList<Student2>();
          list2.add(s7);
          list2.add(s8);
          list2.add(s9);
          list2.add(s10);
          list2.add(s11);
          list2.add(s12);
          Collections.sort(list2);
          System.out.println("按照学号从小到大输出: ");
          for(Student2 stu : list2){
              System.out.println(stu.toString());
          }
    }
}

C++代码:

#include<iostream>
#include <vector>
using namespace std;
class Student{
public:
     long studentid;
     string name;
     int age;
     string major;
public:
     Student(long studentid, string name, int age, string major) {
        this->studentid = studentid;
        this->name = name;
        this->age = age;
        this->major = major;
    }
    void show(){
        cout<<"姓名: "<<this->name<<". 学号: "<<this->studentid <<". 年龄: "<< this->age<< ". 专业: " << this->major<<endl;
    }
};
bool compMax(Student *a,Student *b){
    if (a->studentid> b->studentid)
         return true;
     else
         return false;
}
bool compMin(Student *a,Student *b){
    if (a->studentid< b->studentid)
         return true;
     else
         return false;
}
int main(){
    Student *s1 = new Student(20193250, "张雨轩", 19, "软件工程专业");
    Student *s2 = new Student(20193999, "李四", 30, "材料专业");
    Student *s3 = new Student(20196654, "王五", 29, "机械专业");
    Student *s4 = new Student(20193367, "赵六", 34, "工商管理专业");
    Student *s5 = new Student(20193396, "张三", 34, "土木专业");
    Student *s6 = new Student(20193396, "孙七", 34, "电气专业");
    vector<Student*> vec;
    vec.push_back(s1);
    vec.push_back(s2);
    vec.push_back(s3);
    vec.push_back(s4);
    vec.push_back(s5);
    vec.push_back(s6);
    cout<<"按照学号从大到小输出: "<<endl;
    vector<Student*>::iterator it;
    sort(vec.begin(), vec.end(),compMax);
    for(it=vec.begin();it!=vec.end();it++){
        (*it)->show();
    }
    cout<<"-----------------------------------------------------------------"<<endl;
    cout<<"按照学号从小到大输出: "<<endl;
    sort(vec.begin(), vec.end(),compMin);
    for(it=vec.begin();it!=vec.end();it++){
        (*it)->show();
    }
}

运行结果:

 

 

 

posted @ 2021-11-29 22:38  睡觉不困  阅读(43)  评论(0编辑  收藏  举报