信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();
}
}

运行结果:

Java/C++实现迭代器模式---学生信息的更多相关文章

  1. 16.java设计模式之迭代器模式

    基本需求: 展示一个学校的结构,比如一个学校下面有多个学院,学院下面有多个系,对其节点主要是遍历,与组合模式略有不同 传统方案: 学校<-学院<-系 依次继承 这种方式,在一个页面中展示出 ...

  2. 简单的了解下Java设计模式:迭代器模式(转载)

    迭代器模式定义 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示. Java 开发过程中遍历是常用的.如下边程序: for(int i =0 ; ...

  3. 折腾Java设计模式之迭代器模式

    迭代器模式 Provide a way to access the elements of an aggregate object sequentially without exposing its ...

  4. java设计模式之迭代器模式

    一.迭代器模式简介 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 迭代器模式让我们能游走于聚合内的每一个元素,而又不暴露内部的表示.把游走的任务放在迭代器上,而不是 ...

  5. jsp和java的结合使用显示学生信息

    package com.zyz; public class Student { private String ID; // 学号 private String name; // 姓名 private ...

  6. 设计模式学习笔记(十六)迭代器模式及其在Java 容器中的应用

    迭代器(Iterator)模式,也叫做游标(Cursor)模式.我们知道,在Java 容器中,为了提高容器遍历的方便性,把遍历逻辑从不同类型的集合类中抽取出来,避免向外部暴露集合容器的内部结构. 一. ...

  7. 设计模式 -- 迭代器模式(Iterator)

    --------------------------------------------------------------------- 1.场景问题 考虑这样一个问题: 9个学生对象分别通过数组存 ...

  8. Java实现功能简单的学生管理系统(附带源代码)

    这几天Java学了点新的知识,打算要用这些知识做一个比较简单的管理系统,实战一下子,代码中的功能简洁,可能不多,但是作为一个练手来了解一个项目是怎么样一点一点思考的还是不错的 一.代码中要实现的功能 ...

  9. 深入理解Java中的迭代器

    迭代器模式:就是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节. 概述 Java集合框架的集合类,我们有时候称之为容器.容器的种类有很多种,比如ArrayList.Li ...

随机推荐

  1. 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1

    基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1 Jenkins的Master-Slave分布式构建 什么是Master-Slave分布式构建 Jenkins的Master-S ...

  2. 编写第一个GET、POST接口[renren-fast框架系列(1)]

    配置好 renren-fast 脚手架,学习完 Spring MVC 架构后,我需要具体调试 renren-fast 的接口,比如要新增某个接口. 什么是前后端分离 运行 renren-fast 项目 ...

  3. Python:pyglet学习(1):想弄点3D,还发现了pyglet

    某一天,我突然喜欢上了3D,在一些scratch教程中见过一些3D引擎,找了一个简单的,结果z轴太大了,于是网上一搜,就发现了pyglet 还是先讲如何启动一个窗口 先看看官网: Creating a ...

  4. 浅浅的聊一下 WebSocket

    第一次看到 ws:// 和 wss:// 时候,感觉好高级啊,还有这种协议. Websocket 历史 WebSocket是在2008年6月诞生的1.经由IEFT标准化后,2009年chrome 4第 ...

  5. vue3-码一下组件的v-model

    RT,码一下组件的v-model,知识点太多,没听懂...,后面学完回来再仔细看看

  6. DDD 领域驱动设计之面向对象思想

    面向对象 面向对象是一种对世界理解和抽象的方法.那么对象是什么呢? 对象是对世界的理解和抽象,世界又代称为万物.理解世界是比较复杂的,但是世界又是由事物组成的. 正是这样的一种关系,认识事物是极其重要 ...

  7. Git 修改历史提交信息 commit message

    修改最近一条提交的消息 git commit --amend 进入vim模式 按字母 o 或者 insert键 开始修改内容 按 esc 推出编辑,最常用的是输入":q"直接退出, ...

  8. Flask 之 宏

    宏 对宏(macro)的理解: 把它看作 Jinja2 中的一个函数,它会返回一个模板或者 HTML 字符串 为了避免反复地编写同样的模板代码,出现代码冗余,可以把他们写成函数以进行重用 需要在多处重 ...

  9. luoguP6622 [省选联考 2020 A/B 卷] 信号传递(状压dp)

    luoguP6622 [省选联考 2020 A/B 卷] 信号传递(状压dp) Luogu 题外话: 我可能是傻逼, 但不管我是不是傻逼, 我永远单挑出题人. 题解时间 看数据范围可以确定状压dp. ...

  10. CentOS6跟CentOS7的区别

    1.CentOS6在/etc/profile配置环境变量是JAVAHOME,CentOS7是{JAVA_HOME} 2.