Java/C++实现迭代器模式---学生信息
阅读原文时间:2023年07月08日阅读:3

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

Java代码:

public class Student implements Comparable{
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{
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 list = new ArrayList();
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 list2 = new ArrayList();
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
#include
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<<"姓名: "<name<<". 学号: "<studentid <<". 年龄: "<< this->age<< ". 专业: " << this->major<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 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<<"按照学号从大到小输出: "<::iterator it;
sort(vec.begin(), vec.end(),compMax);
for(it=vec.begin();it!=vec.end();it++){
(*it)->show();
}
cout<<"-----------------------------------------------------------------"<show();
}
}

运行结果: