这个案例考核到了Map集合以及IO流这两方面的知识,结合性还是挺强的.
/**
* 有1个map集合里面存储的是学生的姓名和年龄,内容有
* {赵四 =21,王二=17,张三=18,小丫=25,李四=26,王五=38}
* 要求:
* a,将map集合中的元素使用两种遍历的方式打印到控制台上
* b,将小丫的年龄改成18
* c,根据年龄的降序将里面的元素存入到D:\\student.txt中
*/
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Map.Entry;
import java.util.Comparator;
import java.util.TreeMap;
import java.util.TreeSet;
public class Test04 {
public static void main(String[] args) throws Exception {
//将元素添加到Map集合中
TreeMap<String, Integer> tm = new TreeMap<>();
tm.put("赵四", 21);
tm.put("王二", 17);
tm.put("张三", 18);
tm.put("小丫", 25);
tm.put("李四", 26);
tm.put("王五", 38);
//遍历集合
//方式一: 使用键值对实现
for (Entry<String, Integer> entry : tm.entrySet()) {
String key = entry.getKey();
int value = entry.getValue();
System.out.println(key + "=" + value);
}
System.out.println("====================");
//方式二: 通过键来找值实现
for (String key : tm.keySet()) {
int value = tm.get(key);
System.out.println(key + "=" + value);
}
//将小丫的年龄改成18
for (String key : tm.keySet()) {
if ("小丫".equals(key)) {
tm.put(key, 18);
}
}
System.out.println(tm);
//将集合中的元素按照年龄降序来排列
TreeSet<Entry<String, Integer>> ts = new TreeSet<>(new Comparator<Entry<String,Integer>>() {
@Override
public int compare(Entry<String, Integer> e1,
Entry<String, Integer> e2) {
int num = e1.getValue() - e2.getValue();
return num == 0 ? 1 : num;
}
});
//创建一个标准打印流,并指定写入的路径
PrintStream ps = new PrintStream(new FileOutputStream("D:\\student.txt"));
//获取Map集合的键值对,并将键值对存入到TreeSet集合中
for (Entry<String, Integer> entry : tm.entrySet()) {
ts.add(entry);
}
//遍历集合,并将数据写入到D:\\student.txt中
for (Entry<String, Integer> entry : ts) {
String key = entry.getKey();
int value = entry.getValue();
ps.println(key + "=" + value);
}
//关流
ps.close();
System.out.println(ts);
}
}
|
|