A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这个案例考核到了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);
               
        }
}


1 个回复

正序浏览
挺实用的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马