Map,java中的io流,异常

来源:互联网 发布:想在淘宝开店货源 编辑:程序博客网 时间:2024/06/06 18:28

一.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用在方法上,声明方法有异常,交给调用者处理。
但是呢,如果是编译时期异常,调用就必须处理。
如果是运行时期异常,调用者可以处理,也可以不处理。

原创粉丝点击