首页 > 其他分享 >20231120学习总结.

20231120学习总结.

时间:2023-11-20 09:22:34浏览次数:42  
标签:总结 index 20231120 obj list virtual 学习 return public

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

Java:

public interface Aggregate {
    public void add(Object obj);
    public void remove(Object obj);
    public Iterator iterator();
}


class ConcreteAggregate implements Aggregate {
    private List list = new ArrayList();

    public void add(Object obj) {
        list.add(obj);
    }

    public Iterator iterator() {
        return new ConcreteIterator(list);
    }

    public void remove(Object obj) {
        list.remove(obj);
    }
}



public class ConcreteIterator implements Iterator {
    private List list = new ArrayList();
    private int cursor =0;
    public ConcreteIterator(List list){
        this.list = list;
    }
    public boolean hasNext() {
        if(cursor==list.size()){
            return false;
        }
        return true;
    }

    public boolean isFirst() {
        if(cursor==0) {
            return false;
        }
        return true;
    }


    public Object next() {
        Object obj = null;
        if(this.hasNext()){
            obj = this.list.get(cursor++);
        }
        return obj;
    }

    public void setCursor(int i) {
        cursor=i;
    }

    public Object previous() {
        Object obj=null;
        if(this.isFirst()) {
            obj=this.list.get(--cursor);
        }
        return obj;
    }
}




public interface Iterator {
    public Object next();

    public boolean hasNext();

    public boolean isFirst();

    public Object previous();

    public void setCursor(int i);
}

C++:

#include <iostream> 
#include<string>
#include <sstream>
#include <vector> 
using namespace std;

typedef long long int object;

class Iterator
{
public:
    virtual object begin() = 0;
    virtual void   next() = 0;
    virtual object end() = 0;
    virtual object current() = 0;
    virtual bool   IsDone() = 0;
};

class ConcreteAggregate
{
private:
    vector<object> _objects;

public:
    void AddObject(object obj)
    {
        _objects.push_back(obj);
    }

    object& operator[](int index)
    {
        return _objects[index];
    }
    int size()
    {
        return _objects.size();
    }
};

class ConcreteIterator :public Iterator
{
public:
    ConcreteAggregate* agg;
    int _index;
public:
    ConcreteIterator(ConcreteAggregate* agg)
    {
        this->agg = agg;
        _index = 0;
    }
    virtual object begin()
    {
        return (*agg)[0];
    }
    virtual void next()
    {
        _index++;
    }
    virtual void preious()
    {
        _index--;
    }

    virtual object end()
    {
        _index = agg->size();
        return (*agg)[_index - 1];
    }

    virtual object current()
    {
        return (*agg)[_index];
    }

    virtual bool IsDone()
    {
        return (_index == agg->size());
    }
    virtual bool IsFirst()
    {
        return (_index == 0);
    }
};

int main()
{
    ConcreteAggregate* objects = new ConcreteAggregate();
    cout << "信1305班同学:" << endl;
    object a = 202141280001;
    int num = 44;
    while (num > 0) {
        objects->AddObject(a);
        a++;
        num--;
    }


    ConcreteIterator* iter = new ConcreteIterator(objects);
    ConcreteIterator* iter1 = new ConcreteIterator(objects);

    object tmp_begin = iter->begin();
    cout << "从小到大输出:" << endl;
    while (!iter->IsDone())
    {
        cout << iter->current() << endl;
        iter->next();
    }
    cout << endl;

    object tmp_begin1 = iter1->end();
    cout << "从大到小输出:" << endl;
    while (!iter1->IsFirst())
    {
        iter1->preious();
        cout << iter1->current() << endl;
    }
    cout << endl;

    delete objects;
    delete iter;

    system("pause");
    return 0;
}

 

标签:总结,index,20231120,obj,list,virtual,学习,return,public
From: https://www.cnblogs.com/xxaxf/p/17843190.html

相关文章

  • 2023-2024-1 20231413 《计算机基础与程序设计》第八周学习总结
    2023-2024-120231413《计算机基础与程序设计》第八周学习总结1.作业信息班级:2023-2024-1-计算机基础与程序设计作业要求:2023-2024-1《计算机基础与程序设计》教学进程目标:自学教材:计算机科学概论第9章并完成云班课测试《C语言程序设计》第7章并完成云班课测试作业正文:h......
  • BLOG总结
    前言:    在过去的三个星期里,我接触了许多新的知识和技能。从编程思想到软件包的使用,涉及了诸如set、map、stream、DoubleLinkedList、lambda表达式、正则表达式等内容,这些是我之前接触较少但非常精密的知识。同时,我还学习了银行类的设计、农夫过河实验以及期中考试(主要考......
  • Netty源码学习4——服务端是处理新连接的&netty的reactor模式
    系列文章目录和关于我零丶引入在前面的源码学习中,梳理了服务端的启动,以及NioEventLoop事件循环的工作流程,并了解了Netty处理网络io重要的Channel,ChannelHandler,ChannelPipeline。这一篇将学习服务端是如何构建新的连接。一丶网络包接收流程当客户端发送的网络数据帧通过网......
  • PostgreSQL的学习与安装
    PG的定义:与mysql的区别:Linux下载PG的路径:https://www.postgresql.org/download/#InstalltherepositoryRPM:sudoyuminstall-yhttps://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm#InstallPostgreSQL:sudoyuminsta......
  • 2023-2024-1 20231427 《计算机基础与程序设计》第八周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(https://www.cnblogs.com/rocedu/p/9577842.html#JXJC)这个作业要求在哪里<作业要求的链接>(https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08)|作业正文|...https://www.cnblogs.com/wszdhnsh/p/17842926.html |......
  • openGauss学习笔记-127 openGauss 数据库管理-设置账本数据库-修复账本数据库
    openGauss学习笔记-127openGauss数据库管理-设置账本数据库-修复账本数据库127.1前提条件系统中需要有审计管理员或者具有审计管理员权限的角色。数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。127.2背景信息......
  • java反序列化----CC7利用链学习笔记(Hashtable)
    目录java反序列化----CC7利用链学习笔记(Hashtable)环境搭建利用链java反序列化----CC7利用链学习笔记(Hashtable)环境搭建jdk8u71<dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId>......
  • 2023.11.19 NOIP 总结
    考试复盘进场读了下题,T1很简单,并且后面三道题都挺可做的。因为可以任意交换,直接令当前串字典序最小,其它串字典序最大,然后比较一下就完事了。因为字符集大小只有\(26\),直接开桶模拟就可以了。发现不是很好写,想了一下其实只需要判断一下当前串字典序最小的字母的字典序是否大于其......
  • 2023-2024-1 20231305 《计算机基础与程序设计》第八周学习总结
    2023-2024-120231305《计算机基础与程序设计》第八周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2022-2023-1计算机基础与程序设计第一周作业)这个作业的目标<写上具体方面>......
  • 学习笔记十
    块设备I/O和缓冲区管理块设备I/O缓冲区由于与内存访问相比,磁盘I/O速度较慢,所以不希望在每次执行读写文件操作时都执行磁盘I/O。因此,大多数文件系统使用I/O缓冲来减少进出存储设备的物理I/O数量。合理设计的I/O缓冲方案可显著提高文件I/O效率并增加系统吞吐量。I/O缓冲区原理:文......