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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王晓艺 初级黑马   /  2019-5-7 14:44  /  1283 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王晓艺 于 2019-5-7 14:48 编辑

  • [size=1.25]Map集合概述和特点

    • [size=1.25]Interface Map<k,v>  K:键的类型,V:值的类型
    • [size=1.25]将键映射到值得对象;不能包含重复的键;每个键可以映射到最多一个值
    • [size=1.25]键不允许重复,值可以重复
    • [size=1.25]无序
    • [size=1.25]创建Map集合的对象

      • [size=1.25]多态的方式
      • [size=1.25]具体的实现类HashMap


  • [size=1.25]Map集合的基本功能file://C:\Users\Administrator\Desktop\%E5%B0%B1%E4%B8%9A%E7%8F%AD%E7%AC%94%E8%AE%B0\%E6%88%AA%E5%9B%BE\Snipaste_2019-05-05_09-22-22.png?lastModify=1557211164
  • [size=1.25]Map集合的获取功能

    • [size=1.25]get(Object key); 根据键获取值,获取单个元素;
    • [size=1.25]keyset();获取所有键的集合
    • [size=1.25]values();获取所有值的集合

  • [size=1.25]Map集合的遍历(方式1)

    • [size=1.25]获取所有键的集合。用Keyset()方法实现
    • [size=1.25]遍历键的集合。获取到每一个键,用增强for实现
    • [size=1.25]根据键去找值。用get(Key)方法实现

  • [size=1.25]Map集合的遍历(方式2)

    • [size=1.25]获取所有键值对对象的集合
      [size=1.25]entrySet;
    • [size=1.25]遍历键值对对象的集合,得到每一个键值对对象
      [size=1.25]用增强for实现,得到每一个Map.Entry
    • [size=1.25]根据键值对对象获取键和值
      [size=1.25]用 getKey()得到键
      [size=1.25]用 getValue()得到值

  • [size=1.25]Collections的概述和使用

    • [size=1.25]概述:

      • [size=1.25]是针对集合的工具类

    • [size=1.25]常用方法
      [size=1.25]file://C:\Users\Administrator\Desktop\%E5%B0%B1%E4%B8%9A%E7%8F%AD%E7%AC%94%E8%AE%B0\%E6%88%AA%E5%9B%BE\Snipaste_2019-05-05_15-51-42.png?lastModify=1557211164
      [size=1.25]排序:sort()
      [size=1.25]反转:reverse()
      [size=1.25]洗牌:shuffle()

      • 概述:
        它是文件和目录路径名的抽象表示

        • 文件和目录是可以通过file封装成对象的
        • 对File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已,它是可以存在的,也可以不存在的,将来是要通过具体的操作把这个路径的内容转换成具体存在的。

      • 构造方法:

        • new File("完整路径");
        • new File("目录","文件");
        • File file1 = new File("目录")
          File file2=new File(file1,"文件");

        file://C:\Users\Administrator\Desktop\%E5%B0%B1%E4%B8%9A%E7%8F%AD%E7%AC%94%E8%AE%B0\%E6%88%AA%E5%9B%BE\Snipaste_2019-05-06_09-15-04.png?lastModify=1557211201
      • 创建方法:

        • creatNewFile();
        • 创建目录:mkdir();
        • 多级目录:mkdirs();

        file://C:\Users\Administrator\Desktop\%E5%B0%B1%E4%B8%9A%E7%8F%AD%E7%AC%94%E8%AE%B0\%E6%88%AA%E5%9B%BE\Snipaste_2019-05-06_09-30-17.png?lastModify=1557211201
      • 判断和获取功能:

        • 是否为目录:isDirectory()
        • 是否为文件:isFile()
        • 文件和目录是否存在:exists()
        • 名字:getName()
        • 短路径:getPath()
        • 全路径:getAbsolutePath()
        • 获取目录下文件名:list()
        • 获取目录下文件:lisiFiles()

        file://C:\Users\Administrator\Desktop\%E5%B0%B1%E4%B8%9A%E7%8F%AD%E7%AC%94%E8%AE%B0\%E6%88%AA%E5%9B%BE\Snipaste_2019-05-06_10-10-13.png?lastModify=1557211201
      • 删除方法:
        ​                可删文件也可删目录:delete()
        ​                删除目录时,目录必须为空

      二、递归
      • 概述:
        ​        以编程的角度来看,递归指的方法定义中调用方法本身的现象
      • 解决问题的思路:
        ​        把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
        ​        递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算。
      • 注意事项:
        ​        递归一定要有出口。否则内存溢出
        ​        递归虽然有出口,但是递归的次数也不宜过多。否则内存溢出。

      三、IO流
      • 概述:

        • IO:输入/输出(Input/Output)
        • 流:是一种抽象概念、是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输
        • IO流就是用来处理设备间数据传输问题的。常见的应用:文件复制;文件上传;文件下载

      • 分类:

        • 按照数据的流向:

          • 输入流:读数据
          • 输出流:写数据

        • 按照数据类型来分:

          • 字节流:

            • 字节输入流
            • 字节输出流

          • 字符流“

            • 字符输入流
            • 字符输出流



      • 字节流:

        • 抽象基类:
          InputStream:这个抽象类是表示字节输入流的所有类的超类
          OutputStream:这个抽象类是表示字节输出流的所有类的超类
          子类名特点:子类名称都是以其父类名作为子类名的后缀
        • 字节输出流:
          FileOutputStream("文件的路径" ):创建文件输出流以指定的名称写入文件

      • 使用字节输出流写数据的步骤
        ​                创建字节输出流对象(调用系统功能创建了文件,创建字节输出流对象,让字节输出流对象指向文件)
        ​                调用字节输出流对象的写数据方法
        ​                释放资源(关闭此文件输出流并释放与此流相关联的任何系统资源)
      • 写数据的3种方式:

        • ​        file://C:\Users\Administrator\Desktop\%E5%B0%B1%E4%B8%9A%E7%8F%AD%E7%AC%94%E8%AE%B0\%E6%88%AA%E5%9B%BE\Snipaste_2019-05-06_15-03-36.png?lastModify=1557211201

      • 字节流写数据的两个小问题

        • 字节流写数据如何实现换行呢?

          • window:\r\n
          • linux:\n
          • mac:\r
          • 不同系统是不一样的

        • 字节流写数据如何实现追加写入?

          • publicFileOutputStream(String name,boolean append)
          • 创建文件输出流以指定的名称写入文件。如果第二个参数为true ,则字节将写入文件的末尾而不是开头
          • 如何进行追加写:new FileOutPutStream("文件的路径",true)

        • 字节流写数据加异常处理

          • finally:try catch 后必须要执行的代码块,做关闭资源的操作;

        • 字节流读数据(一次读一个字节数据)

          • file://C:\Users\Administrator\Desktop\%E5%B0%B1%E4%B8%9A%E7%8F%AD%E7%AC%94%E8%AE%B0\%E6%88%AA%E5%9B%BE\Snipaste_2019-05-06_16-10-30.png?lastModify=1557211201
          • 字节输入流对象:InputStream()
            ​        FileOutPutStream()
          • 读数据的方法:read() 当-1代表文件到结尾
          • 释放资源:close()

        • 字节流读数据(一次读一个字节数组数据)

          • read(byte[])返回值实际读取数据的长度,-1代表数据读取完成。
          • 示例代码:
          • [Java] 纯文本查看 复制代码
            public static void main(String[] args) throws IOException {
                FileInputStream fis = new FileInputStream("day08\\java.txt");
            
               byte[] bys = new byte[1024];
               int len;
               while ((len=fis.read(bys))!=-1){
                   System.out.println(new String(bys,0,len));
               }
            
                fis.close();
            }
          • 字节流复制图片

            • 示例代码:
            • [Java] 纯文本查看 复制代码
              public static void main(String[] args) throws IOException {
                  FileInputStream fis = new FileInputStream("D:\\11\\YYY.jpg");
                  FileOutputStream fos =new FileOutputStream("day08\\YYY.jpg");
              
                  byte[] bys = new byte[1024];
                  int len;
                  while ((len=fis.read(bys))!=-1){
                      fos.write(bys,0,len);
                  }
              
                  fis.close();
                  fos.close();
              }
            • 求文件夹的字节:

              • 示例代码:

              [Java] 纯文本查看 复制代码
              import java.io.File;
              
              public class zuoye15 {
                  public static void main(String[] args) {
                      File f1 = new File("D:\\22");
                      System.out.println(byts(f1));
                  }
                  public static long byts(File f1) {
                      //计数器
                      long len = 0;
                      //判断是否为文件夹
                      if (f1.isDirectory()) {
                          //获取目录下的文件
                          File[] listFiles = f1.listFiles();
                          //增强for循环遍历
                          for (File f2 : listFiles) {
                              //判断是否为文件
                              if (f2.isFile()) {
                                  len += f2.length();
                              }else{
                                  len+=byts(f2);
                              }
                          }
                      }return len;
                  }
              }
            • 递归删除文件夹里的东西和文件夹:
            • import java.io.File;

              public class zuoye14 {
                  public static void main(String[] args) {
                      File f1 = new File("D:\\11");
                      getAllfilepath(f1);
            •       public static void getAllfilepath(File f1){
                            //获取目录下的文件
                        File[] files = f1.listFiles();
                        //判断是否为空
                        if(files!=null){
                            for(File f : files){
                                    //判断是不是文件夹
                                if(f.isDirectory()){
                                    getAllfilepath(f);
                                }else{
                                        //不是文件夹就删除
                                    f.delete();
                                }
                                //删除剩下来的空文件夹
                                f1.delete();
                            }
                        }
                    }
                }[/mw_shl_code]



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马