11.18实验18:迭代器模式

[实验任务一]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. 注意编程规范。

 

 

posted @     阅读(6)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示