会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132849个问题
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2401楼

2020 12 04-----------------------------

package com.bjsxt;
package com.bjsxt;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class HashMapTest {
    public static void main(String[] args) {
        //实例化HashMap容器
        Map<String,String> map = new HashMap<>();
        //添加元素
        map.put("a","A");
        String value = map.put("a","B");
        System.out.println(value);

        System.out.println("---------------------------");
        String val = map.get("a");
        System.out.println(val);

        System.out.println("------------------------------");
        map.put("b","B");
        map.put("c","C");
        map.put("d","D");
        map.put("e","E");
        //获取HashMap容器中所有的元素,可以使用keySet方法与get方法一并完成。
        Set<String> keys = map.keySet();
        for(String key:keys){
            String v1 = map.get(key);
            System.out.println(key+" ---- "+v1);
        }
        System.out.println("-----------------");
        Set<Map.Entry<String,String>> entrySet = map.entrySet();
        for(Map.Entry<String,String> entry:entrySet){
            String key = entry.getKey();
            String v = entry.getValue();
            System.out.println(key+" ---------- "+v);
        }
      }
}

为什么这里是String value = map.put("a","B");  而不是String value = new map.put("a","B");

Set<Map.Entry<String,String>> entrySet = map.entrySet();  而不是

Set<Map.Entry<String,String>> entrySet =  new map.entrySet();


JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2405楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2406楼

老师,这里使用BufferedInputStream和BufferedOutputStream定义的处理流,是不是与自定义byte[]数组缓冲区然后read(byte[] b)并不一样?


我的理解:

1)处理流仍然是一个字节一个字节从数据源中读取数据,只是将这些字节缓存在处理流定义的字节数组中,之后等满了以后(达到8192个字节)再读入到程序中;

2)而自定义的缓冲区是一次直接从数据源中读取多个字节(比如定义的1024个字节数组)到程序中。


处理小文件的时候,自定义的会不会效率更高一下?

处理大文件的时候使用那个更好一些?

两个结合在一块使用适用吗?(比如第二段代码中的适用)


第一段代码:

package cn.ljp;

import java.io.*;

public class TestBufferedInputStream02 {
    public static void main(String[] args) {
        // 1) 定义字节流和处理流
        InputStream fis = null;
        InputStream fib = null;
        OutputStream fos = null;
        OutputStream fob = null;
        try{
            fis = new FileInputStream("f:/a.png");
            fib = new BufferedInputStream(fis);
            fos = new FileOutputStream("f:/aa.png");
            fob = new BufferedOutputStream(fos);
            int emp = 0;
            long start = System.currentTimeMillis();
            while((emp = fib.read()) != -1){
                System.out.println(emp);
                fob.write(emp);
            }
            fob.flush();
            long stop = System.currentTimeMillis();
            System.out.println("花费时间" + (stop - start) + "毫秒");
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(fib != null)
                    fib.close();
                if(fis != null)
                    fis.close();
                if(fob != null)
                    fob.close();
                if(fos != null)
                    fos.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }
}

第二段代码:

package cn.ljp;

import java.io.*;

public class TestBufferedInputStream {
    public static void main(String[] args) {
        // 1) 定义字节流和处理流
        InputStream fis = null;
        InputStream fib = null;
        OutputStream fos = null;
        OutputStream fob = null;
        try{
            fis = new FileInputStream("f:/a.png");
            fib = new BufferedInputStream(fis);
            fos = new FileOutputStream("f:/aa.png");
            fob = new BufferedOutputStream(fos);
            byte[] buff = new byte[1204];
            int emp = 0;
            long start = System.currentTimeMillis();
            while((emp = fib.read(buff)) != -1){
                System.out.println(emp);
                fob.write(buff,0,emp);
            }
            fob.flush();
            long stop = System.currentTimeMillis();
            System.out.println("花费时间" + (stop - start) + "毫秒");
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(fib != null)
                    fib.close();
                if(fis != null)
                    fis.close();
                if(fob != null)
                    fob.close();
                if(fos != null)
                    fos.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }

    }
}


JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 2409楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2410楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 2411楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2412楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2413楼

http_server02.zip

视频里报异常后再xml里面配置了“favicon”就没问题了,怎么我就报错了,把视频代码搬进去也是这样

image.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 2415楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637