选择合适的map集合保存5位学员的学号和姓名,然后按学号的自然顺序的倒序将这些键值对一一打印出来。
时间: 2023-04-24 09:02:53 浏览: 350
可以使用TreeMap集合来保存学号和姓名,TreeMap会按照键的自然顺序排序。代码如下:
```
import java.util.Map;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
Map<Integer, String> map = new TreeMap<>((o1, o2) -> o2 - o1); // 按学号的自然顺序的倒序排序
map.put(10001, "张三");
map.put(10002, "李四");
map.put(10003, "王五");
map.put(10004, "赵六");
map.put(10005, "钱七");
for (Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println("学号:" + entry.getKey() + ",姓名:" + entry.getValue());
}
}
}
```
输出结果为:
```
学号:10005,姓名:钱七
学号:10004,姓名:赵六
学号:10003,姓名:王五
学号:10002,姓名:李四
学号:10001,姓名:张三
```
相关问题
1、选择合适的Map集合保存5位学员的学号和姓名,然后按学号的自然顺序的倒序将这些键值对一一打印出来(要求使用两种遍历方式)(5分钟)
在Java中,我们可以使用`LinkedHashMap`或者`TreeMap`来保存学员的信息,因为它们会保持元素的插入顺序,对于学号的自然顺序倒序打印十分方便。这里我会演示如何使用这两种数据结构。
首先,我们创建一个`LinkedHashMap`,它允许按照插入顺序访问元素:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
// 创建学员信息
Map<Integer, String> studentMap = new LinkedHashMap<>();
studentMap.put(5001, "学员A");
studentMap.put(5002, "学员B");
studentMap.put(5003, "学员C");
studentMap.put(5004, "学员D");
studentMap.put(5000, "学员E"); // 学号从大到小
// 遍历并打印倒序学号
// 使用迭代器遍历
Iterator<Map.Entry<Integer, String>> iterator = studentMap.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<Integer, String> entry = iterator.next();
System.out.println("学号:" + entry.getKey() + ", 姓名:" + entry.getValue());
}
// 使用反向迭代器遍历(LinkedHashMap特有的)
iterator = studentMap.descendingKeySet().iterator(); // 或者用Collections.reverseOrder()
while (iterator.hasNext()) {
int key = iterator.next();
System.out.println("学号:" + key + ", 姓名:" + studentMap.get(key));
}
}
}
```
对于`TreeMap`,由于它是基于红黑树实现的,所以默认按照排序规则(这里是自然数的升序)存储,我们需要手动设置其排序顺序为降序,然后遍历:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
// 创建学员信息
Map<Integer, String> studentMap = new TreeMap<>(Collections.reverseOrder()); // 设置降序排列
studentMap.put(5001, "学员A");
... // 同样添加其他学员信息
// 使用迭代器遍历(TreeMap自动排序)
for (Map.Entry<Integer, String> entry : studentMap.entrySet()) {
System.out.println("学号:" + entry.getKey() + ", 姓名:" + entry.getValue());
}
}
}
```
1、选择合适的Map集合保存5位学员的学号和姓名,然后按学号的自然顺序的倒序将这些键值对一一打印出来(要求使用两种遍历方式)(5分钟)
首先,你可以选择使用`TreeMap`或者`LinkedHashMap`作为Map集合,因为它们可以保证元素按照插入顺序或访问顺序排序。这里我们使用`TreeMap`,因为它默认就是按照key的自然顺序排列的,并且支持快速查找。
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
// 创建一个TreeMap,存储学员信息并保持学号升序
Map<Integer, String> studentMap = new TreeMap<Integer, String>();
// 添加学员信息 (学号1到5)
studentMap.put(5, "学员5");
studentMap.put(4, "学员4");
studentMap.put(3, "学员3");
studentMap.put(2, "学员2");
studentMap.put(1, "学员1");
// 遍历并打印按学号倒序的键值对 - 使用迭代器
Iterator<Map.Entry<Integer, String>> iterator = studentMap.descendingMap().entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<Integer, String> entry = iterator.next();
System.out.println("学号: " + entry.getKey() + ", 姓名: " + entry.getValue());
}
// 使用增强for循环遍历
for (Map.Entry<Integer, String> entry : studentMap.descendingMap().entrySet()) {
System.out.println("学号: " + entry.getKey() + ", 姓名: " + entry.getValue());
}
}
}
```
在这个示例中,我们先创建了一个`TreeMap`,然后添加了五个学员的信息。接着,通过`.descendingMap()`方法将Map转换成按照学号降序的映射,再分别使用迭代器和增强for循环遍历并打印出学号和姓名。
阅读全文