11.18实验18:迭代器模式

news/2024/11/19 14:27:30/文章来源:https://www.cnblogs.com/yindantong/p/18554769

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

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

实验要求:

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

好的,下面是关于JavaC++中常见数据结构(如`vector``list``map``set`)及其迭代器使用方法的详细介绍。

 

Java中的数据结构和迭代器

1. `ArrayList`(类似于C++`vector`

 

`ArrayList`是一个动态数组,可以根据需要调整大小。

 

java

import java.util.ArrayList;

import java.util.Iterator;

 

public class ArrayListExample {

    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<>();

        list.add("Apple");

        list.add("Banana");

        list.add("Cherry");

 

        // 使用迭代器遍历

        Iterator<String> iterator = list.iterator();

        while (iterator.hasNext()) {

            System.out.println(iterator.next());

        }

    }

}

 

 

2. `LinkedList`(类似于C++`list`

 

`LinkedList`是一个双向链表,适合频繁插入和删除操作。

 

java

import java.util.LinkedList;

import java.util.ListIterator;

 

public class LinkedListExample {

    public static void main(String[] args) {

        LinkedList<String> list = new LinkedList<>();

        list.add("Apple");

        list.add("Banana");

        list.add("Cherry");

 

        // 使用ListIterator遍历

        ListIterator<String> listIterator = list.listIterator();

        while (listIterator.hasNext()) {

            System.out.println(listIterator.next());

        }

    }

}

 

3. `HashMap`(类似于C++`map`

 

`HashMap`是一个基于哈希表的键值对存储结构。

 

java

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

 

public class HashMapExample {

    public static void main(String[] args) {

        HashMap<String, Integer> map = new HashMap<>();

        map.put("Apple", 1);

        map.put("Banana", 2);

        map.put("Cherry", 3);

 

        // 使用迭代器遍历

        Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();

        while (iterator.hasNext()) {

            Map.Entry<String, Integer> entry = iterator.next();

            System.out.println(entry.getKey() + ": " + entry.getValue());

        }

    }

}

 

4. `HashSet`(类似于C++`set`

 

`HashSet`是一个不允许重复元素的集合。

 

java

import java.util.HashSet;

import java.util.Iterator;

 

public class HashSetExample {

    public static void main(String[] args) {

        HashSet<String> set = new HashSet<>();

        set.add("Apple");

        set.add("Banana");

        set.add("Cherry");

 

        // 使用迭代器遍历

        Iterator<String> iterator = set.iterator();

        while (iterator.hasNext()) {

            System.out.println(iterator.next());

        }

    }

}

 

 C++中的数据结构和迭代器

1. `std::vector`

 

`std::vector`是一个动态数组,支持快速随机访问。

 

cpp

#include <iostream>

#include <vector>

 

int main() {

    std::vector<std::string> vec = {"Apple", "Banana", "Cherry"};

 

    // 使用迭代器遍历

    for (auto it = vec.begin(); it != vec.end(); ++it) {

        std::cout << *it << std::endl;

    }

 

    return 0;

}

 

2. `std::list`

 

`std::list`是一个双向链表,适合频繁插入和删除操作。

 

cpp

#include <iostream>

#include <list>

 

int main() {

    std::list<std::string> lst = {"Apple", "Banana", "Cherry"};

 

    // 使用迭代器遍历

    for (auto it = lst.begin(); it != lst.end(); ++it) {

        std::cout << *it << std::endl;

    }

 

    return 0;

}

 

3. `std::map`

 

`std::map`是一个基于红黑树的键值对存储结构,自动排序。

 

cpp

#include <iostream>

#include <map>

 

int main() {

    std::map<std::string, int> m;

    m["Apple"] = 1;

    m["Banana"] = 2;

    m["Cherry"] = 3;

 

    // 使用迭代器遍历

    for (auto it = m.begin(); it != m.end(); ++it) {

        std::cout << it->first << ": " << it->second << std::endl;

    }

 

    return 0;

}

 

4. `std::set`

 

`std::set`是一个不允许重复元素的集合,自动排序。

 

cpp

#include <iostream>

#include <set>

 

int main() {

    std::set<std::string> s = {"Apple", "Banana", "Cherry"};

 

    // 使用迭代器遍历

    for (auto it = s.begin(); it != s.end(); ++it) {

        std::cout << *it << std::endl;

    }

 

    return 0;

}

Java使用`ArrayList``LinkedList``HashMap``HashSet`,而C++使用`std::vector``std::list``std::map``std::set`。每种数据结构都有其特定的用途和性能特点,选择合适的数据结构可以提高程序的效率和可读性。

2. 提交源代码;

package rjsj.no18;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Iterator;

import java.util.List;

class Student implements Comparable<Student>{

    private String name;

    private int sid;

    private int age;

    public Student(String name, int sid, int age) {

        this.name = name;

        this.sid = sid;

        this.age = age;

    }

    @Override

    public String toString() {

        return "Student{" +

                "姓名='" + name + '\'' +

                ", 学号=" + sid +

                ", 年龄=" + age +

                '}';

    }

    @Override

    public int compareTo(Student o) {

        if (this.sid > o.sid){

            return -1;

        } else if (this.sid < o.sid){

            return 1;

        } else {

            return 0;

        }

    }

}

class IteratorDemo {

    public static void main(String[] args) {

        Student student1 = new Student("张三",20193885,21);

        Student student2 = new Student("李四",20201456,20);

        Student student3 = new Student("王五",20184655,23);

        Student student4 = new Student("赵六",20191242,22);

        Student student5 = new Student("李七",20213256,19);

        List<Student> list = new ArrayList<Student>();

        list.add(student1);list.add(student2);list.add(student3);

        list.add(student4);list.add(student5);

        Collections.sort(list);

        System.out.println("按学号排序输出:");

        Iterator i = list.iterator();

        while (i.hasNext()){

            System.out.println(i.next().toString());

        }

    }

}

 

3. 注意编程规范。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/836807.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

皮带跑偏识别智慧矿山一体机人员乘坐皮带识别提升矿山效率的智能化解决方案

在矿业领域,随着科技的不断进步,智能化转型已成为提升矿山安全性、效率和可持续性的关键。智慧矿山一体机的问世,正是这一转型的体现,它专为矿山环境设计,集成了多种前沿技术,以实现矿山作业的智能化管理。本文将详细介绍皮带跑偏识别智慧矿山一体机如何通过其先进的功能…

罐笼乘坐人员超限识别智慧矿山一体机斜井人员进出识别应用场景综述

在矿山行业中,安全始终是最重要的议题之一。随着工业4.0和智能化技术的发展,智慧矿山一体机应运而生,它不仅是一款设备,更是一个全面的解决方案,旨在通过智能化手段提升矿山的安全监管水平。本文将详细介绍斜井人员进出识别智慧矿山一体机的功能特点、技术优势以及在不同矿…

码元和码点的区别

charCodeAt与codePointAt的用法: 相同点:charCodeAt与codePointAt都是字符串实例上的方法,用途都是用来返回指定索引位字符的Unicode编码。不同点:charCodeAt与codePointAt匹配索引位的规则不一样。charCodeAt是根据码元来匹配,codePointAt是根据码点来进行匹配的。先举个…

CMDB平台(进阶篇):CMDB的构建指南(二)

CMDB(配置管理数据库)作为IT服务管理中的重要组成部分,其构建过程需要严谨且细致的规划。在CMDB的构建过程中,定义需求和创建IT服务模型蓝图是两个至关重要的阶段。本文将详细探讨这两个阶段,为CMDB的构建提供实用指南。 定义需求 定义需求是CMDB构建的首要步骤,其核心在…

Transformer Concept Exploration and Practice in Pytorch

This post explores the principles about the impressive transformer structure and for downstream tasks, such as machine translate, it achieves the full implementation and training details.Introduction Transformer 是一种广泛应用与自然语言处理的神经网络架构,…

PN-RT中的一些基础概念

以太网帧和时间直接的关系我们通常的描述的1Gbps/100Mbps/1000Mbps是什么意思:bps就是bit per second的意思,表示每秒支持多少个bit的传输速率。1Gbps就是某一个网卡最大支持用1G bit每秒的速率发送/接收bit流。1Gbps = 1 x 10^9 bit per second 1Mbps = 1 x 10^6 bit per se…

校园防欺凌预警系统 学生打架智能识别系统

校园防欺凌预警系统 学生打架智能识别系统在校园的卫生间、宿舍等容易发生欺凌行为的场所,安装AI语音防欺凌报警系统是十分必要的。校园防欺凌预警系统 学生打架智能识别系统能够实时监听周围的声音,一旦检测到异常求救关键词,系统会立即启动报警程序。系统会立刻将警情传送…

NSSM封装Windows服务工具的使用与介绍

NSSM 是一个服务封装程序,它可以将普通 exe 程序 或 Java程序 或 Nodejs 项目封装成服务,像 windows 服务一样运行。同类型的工具还有微软自己的 srvany,不过 NSSM 更加简单易用,并且功能强大。它的特点如下: 支持普通 exe 程序(控制台程序或者带界面的 Windows 程序都可…

AI 实战篇:Spring-AI再更新!细细讲下Advisors

在2024年10月8日,Spring AI再次进行了更新,尽管当前版本仍为非稳定版本(1.0.0-M3),但博主将持续关注这些动态,并从流行的智能体视角深入解析其技术底层。目前,Spring AI仍处于小众状态,尚未经过开源社区多年的维护和稳定化过程,这与已经较为成熟的Spring框架形成鲜明对…

充电桩车位长时间占用识别系统

充电桩车位长时间占用识别系统利用充电站现场装好的监控摄像头, 充电桩车位长时间占用识别系统24小时对监控区域内的车位进行实时监测。当检测到燃油车占用充电桩车位,并且停车时长超过指定时间时将产生报警,并自动识别车牌号。一旦系统产生报警,它将识别车牌号,并将报警信…

接口控制器层(Controller层)设计(网文)

在实际工作中,我们需要经常跟第三方平台打交道,可能会对接第三方平台Controller接口,或者提供Controller接口给第三方平台调用。 那么问题来了,如果设计一个优雅的Controller接口,能够满足:安全性、可重复调用、稳定性、好定位问题等多方面需求? 今天跟大家一起聊聊设计…

橙啦视频课件课程下载工具,如何在电脑端下载橙啦视频课程课件资料PDF,PPT到本地?

一. 安装橙啦课程下载器 1.获取学无止下载器 https://www.xuewuzhi.cn/orangevip_downloader 2.下载安装后,然后点击桌面快捷方式运行即可。 注意:杀毒软件可能会阻止外部exe文件运行,并将其当做成病毒,直接添加信任即可,本软件绝对没有木马病毒。 二. 使用说明 1.学无止下…