24.11.23
[实验任务一]:JAVA和C++常见数据结构迭代器的使用
信1305班共44名同学,每名同学都有姓名,学号和年龄等属性,分别使用JAVA内置迭代器和C++中标准模板库(STL)实现对同学信息的遍历,要求按照学号从小到大和从大到小两种次序输出学生信息。
实验要求:
- 搜集并掌握JAVA和C++中常见的数据结构和迭代器的使用方法,例如,vector, list, map和set等;
Java:
数据结构 实现类 迭代器使用方式
列表(List) ArrayList、LinkedList Iterator、ListIterator(支持双向遍历)
集合(Set) HashSet、TreeSet、LinkedHashSet Iterator
映射(Map) HashMap、TreeMap、LinkedHashMap 通过 entrySet() 或 keySet() 获取迭代
队列(Queue) LinkedList、PriorityQueue 通过 Iterator 或 for-each 遍历
C++:
数据结构 实现类 迭代器使用方式
动态数组 std::vector std::vector::iterator
链表 std::list std::list::iterator
集合(Set) std::set std::set::iterator
映射(Map) std::map std::map<Key, T>::iterator
队列(Queue) std::queue、std::priority_queue 使用特定访问方法(如top()) - 提交源代码;
Java:
package org.test.ruanjiansheji.diedaiqi;
import java.util.*;
class Student {
String name;
int id;
int age;
public Student(String name, int id, int age) {
this.name = name;
this.id = id;
this.age = age;
}
@Override
public String toString() {
return "ID: " + id + ", Name: " + name + ", Age: " + age;
}
}
public class StudentIterator {
public static void main(String[] args) {
List
// 初始化学生数据
students.add(new Student("Alice", 1002, 20));
students.add(new Student("Bob", 1001, 19));
students.add(new Student("Charlie", 1003, 21));
// 按学号从小到大排序
students.sort(Comparator.comparingInt(s -> s.id));
System.out.println("按学号从小到大:");
Iterator
while (ascIterator.hasNext()) {
System.out.println(ascIterator.next());
}
// 按学号从大到小排序
students.sort((s1, s2) -> Integer.compare(s2.id, s1.id));
System.out.println("\n按学号从大到小:");
Iterator<Student> descIterator = students.iterator();
while (descIterator.hasNext()) {
System.out.println(descIterator.next());
}
}
}
C++:
include
include
include
using namespace std;
struct Student {
string name;
int id;
int age;
// 构造函数
Student(string n, int i, int a) : name(n), id(i), age(a) {}
// 输出学生信息
void print() const {
cout << "ID: " << id << ", Name: " << name << ", Age: " << age << endl;
}
};
int main() {
vector
{"Alice", 1002, 20},
{"Bob", 1001, 19},
{"Charlie", 1003, 21}
};
// 按学号从小到大排序
sort(students.begin(), students.end(), [](const Student& a, const Student& b) {
return a.id < b.id;
});
cout << "按学号从小到大:" << endl;
for (auto it = students.begin(); it != students.end(); ++it) {
it->print();
}
// 按学号从大到小排序
sort(students.begin(), students.end(), [](const Student& a, const Student& b) {
return a.id > b.id;
});
cout << "\n按学号从大到小:" << endl;
for (auto it = students.begin(); it != students.end(); ++it) {
it->print();
}
return 0;
}
- 注意编程规范。