Map,java中的io流,异常

一.Map:
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
Map接口中的方法概述

 A:删除功能
        void clear():移除集合中的所有键值对元素
        V remove(Object key):根据键移除键值对元素,并返回值
    B:判断功能
        boolean containsKey(Object key):判断集合中是否包含指定的键
        boolean containsValue(Object value):判断集合中是否包含指定的值
        boolean isEmpty():判断集合是否为空
    C:获取功能
        Set<Map.Entry<K,V>> entrySet():获取键值对对象的集合,遍历键值对对象,
        利用getKey(),getValue()取出键和值(理解即可)

        V get(Object key):根据键获取值
        Set<K> keySet():获取所有的键
        Collection<V> values():获取所有的值
    D:添加功能
        V put(K key,V value):集合添加键值对
    E:长度功能
        int size():键值对对数。

Map 几个实现类 HashMap Hashtable LinkedHashMap TreeMap
1.HashMap 底层数据结构哈希表 特点:元素无序 且唯一 元素唯一 是靠元素重写 equlse方法和hashCode方法
2.TreeMap 底层数据结构是二叉树 它能够对元素进行排序 排序对元素有要求 要求元素实现 Comparable接口 重写 compareTo 方法 元素放置的顺序 就是根据这个方法的返回值正 负 0来确定
3.LinkedHashMap 底层数据结构是链表和哈希表 链表保证元素有序,哈希表保证元素唯一
4.Hashtable同步的 效率第 数据安全

// 常见方法
        HashMap<Object, Object> hm = new HashMap<>();

        // hm.put(key, value); 添加数据 第一次添加 返回值是null 再添加就会上一次的值 键相同 值覆盖
        // hm.size() 获取集合长度
        // hm.isEmpty()//判断集合是否为空
        // hm.containsKey(key) 判断集合有没有这个键
        // hm.containsValue(value) 判断集合有没有这个值
        // hm.get(key) 根据键获取对应值
        // hm.keySet() 获取所有的键的set集合
        // hm.entrySet();// 获取所有的键值对 对象集合 Entry<Object, Object> 有两个方法 getKey 和
        // getValue
        // hm.values(); 获取所有值的集合
        // hm.clear(); 清除所有的元素
        // hm.remove(key) 根据键移除一对元素

二.HashMap与TreeMap的相同点与不同点

相同点:主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。 
不同点:
    1.HashMap里面存入的键值对在取出的时候是随机的,也是我们最常用的一个Map.根据键可以直接获取它的值,
具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap 是最好的选择。  
    2.TreeMap取出来的是排序后的键值对。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。

三. HashMap Hashtable 区别

HashMap非同步的 效率高 数据不安全
 Hashtable同步的 效率第 数据安全

四.File
File:文件和目录(文件夹)路径名的抽象表示形式。

File的构造方法:
File(String pathname):把一个路径名称封装成File对象
File(String parent, String child):把一个父路径和一个子路径封装成一个File对象
File(File parent, String child):把一个父路径File对象和一个子路径封装成一个File对象

创建功能:

 A:创建文件
        public boolean createNewFile():如果文件不存在,就创建。否则,不创建。

    B:创建目录
        public boolean mkdir():如果目录不存在,就创建。否则,不创建。

        public boolean mkdirs():如果目录不存在,就创建。否则,不创建。
                                即时父目录不存在,也可以连父目录一起创建。
删除功能:
public boolean delete():既可以删除文件,又可以删除目录。

路径问题:
A:绝对路径 就是以盘符开始的路径(d:\test\aaa\b.txt)
B:相对路径 就是不以盘符开始的路径(a.txt)
一般都是相对应当前的项目而言的。
注意事项:
:Java程序的删除不走回收站。
B:如果目录内还有内容就不能删除。

判断功能:
 public boolean isDirectory():是否是目录
  public boolean isFile():是否是文件
  public boolean exists():是否存在
  public boolean canRead():是否可读
  public boolean canWrite():是否可写
  public boolean isHidden():是否隐藏
 获取功能:
  public String getAbsolutePath():获取绝对路径
  public String getPath():获取相对路径

数据类型:

字节流
            字节输入流        InputStream(抽象类)
            字节输出流       OutputStream(抽象类)

        字符流
            字符输入流        Reader
            字符输出流       Writer
            字符输出流

    注意:一般我们在讨论IO的分类时,默认是按照数据类型分的。

字节输出流:OutputStream(抽象类)
因为OutputFile是抽象类,所以我们用他的子类FileOutputStream
构造方法:

  FileOutputStream(File file)
        FileOutputStream(String name)

五.异常
就是程序出现的不正常的情况。
异常分类:
错误:这是非常严重的问题,一般我们处理不了。
异常:
编译时期异常 开始就必须要处理的,如果不处理,后面就走不了。
运行时期异常 开始可以不用处理。这种问题一旦发生,就是我们的程序问题,需要我们修改程序。

如何处理异常,保证各个部分不影响的呢?
两种方案:
A:try…catch…finally
B:throws

try…catch…finally:

   try{
        可能出现异常的代码
    }catch(异常类名 变量名) {
        针对异常的代码处理
    }finally {
        释放资源的地方
    }

多个异常的处理(演示数组索引越界异常,除数为0异常)
A:针对每一个出现问题的地方写一个try…catch语句
B:针对多个异常,采用一个try,多个catch的情况。
try…catch…catch…

遇到try里面的问题,就自动和catch里面进行匹配。
    一旦匹配就执行catch里面的内容,执行完毕后,接着执行后面的代码。

    注意:
        如果异常间有子父关系,父必须在最后。

编译时期异常和运行时期异常的区别:
编译时期异常:Java程序必须显示处理,否则程序就会发生错误,无法通过编译
运行时期异常:无需显示处理,也可以和编译时异常一样处理
Throwable中的方法:(演示除数为0异常)
printStackTrace():打印异常信息,程序从出问题的地方开始就会打印创建一个该异常对应的对象, 该对象直接调用打印方法打印出异常信息

try…catch和throws的区别
try…catch 是直接进行了处理。
而throws则是把异常处理的事情交给了调用者。

throws用在方法上,声明方法有异常,交给调用者处理。
但是呢,如果是编译时期异常,调用就必须处理。
如果是运行时期异常,调用者可以处理,也可以不处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值