黑马程序员技术交流社区

标题: 递归案例03(结合HashMap集合) [打印本页]

作者: _J2EE_LiXiZhen    时间: 2017-11-17 23:16
标题: 递归案例03(结合HashMap集合)
[Java] 纯文本查看 复制代码
//键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数
//注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key,
//        用个数作为value,放入到map集合中,并用两种方式遍历map集合
//        例如:
//        doc 的类型的文件有  3 个
//        java 的类型的文件有  5 个
//        txt 的类型的文件有  7 个

public class TestMap {
        public static void main(String[] args) {
                //创建map集合
                HashMap<String, Integer> map = new HashMap<String,Integer>();
                //创建File对象
                File file = new File("C:\\Users\\Administrator\\Desktop\\xmind");
               
                //调用方法foreach
                foreach(file,map);
               
                /*//遍历map
                for (String key : map.keySet()) {
                        System.out.println(key+"="+map.get(key));
                }*/
        }
        public static int value = 1;
        //遍历方法,遍历出指定路径下的所有文件和文件夹,将后缀和数量存入map集合
        public static void foreach(File file,HashMap<String,Integer> map) {
               
                //是文件
                if(file.isFile()) {
                       
                        String[] arr = file.getName().split("\\.");
                        if(map.get(arr[1])==null) {
                                map.put(arr[1], value);
                        } else {
                                map.put(arr[1], value+1);
                        }
                } else {
                        //是文件夹
                        File[] fileList = file.listFiles();
                        for (File f : fileList) {
                                if(f.isFile()) {
                                        String[] arr = f.getName().split("\\.");
                                        if(map.get(arr[1])==null) {
                                                map.put(arr[1], value);
                                        } else {
                                                value++;
                                                map.put(arr[1], value);
                                        }
                                } else {
                                        foreach(f,map);
                                }
                        }
                }
               
                for (String key : map.keySet()) {
                        System.out.println(key+"="+map.get(key));
                }
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2