一.Map集合
概述
1.哈希表元素的唯一性是通过元素重写hashcode()和equals()方法来保证的
注意:若元素为自定义类型,必须重写这两个方法
2.map集合是双链集合,map集合的数据结构只和键有关
一:添加功能
V put(K key, V value)
// 将指定的值与此映射中的指定键关联(可选操作)。
如果键不存在,添加值,返回null
如果键存在,替换键所对应的值,返回被替换的值
二:删除功能
void clear()
//从此映射中移除所有映射关系(可选操作)。
V remove(Object key)
//如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
返回值:返回此映射中以前关联该键的值,如果此映射不包含该键的映射关系,则返回 null。
三:判断功能
boolean containsKey(Object key)
//如果此映射包含指定键的映射关系,则返回 true。
boolean containsValue(Object value)
// 如果此映射将一个或多个键映射到指定值,则返回 true。
boolean isEmpty()
// 如果此映射未包含键-值映射关系,则返回 true。
四:获取功能
Set<K> keySet()
// 返回此映射中包含的键的 Set 视图。
Set<Map.Entry<K,V>> entrySet()
//返回此映射中包含的映射关系的 Set 视图。
Set<Map.Entry<K,V>> entrySet()
返回此映射中包含的映射关系的 Set 视图。
V get(Object key)
// 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
int size()
返回此映射中的键-值映射关系数。
五.Map集合的遍历
1.Set<Map.Entry<K,V>> entrySet()
// 返回此映射所包含的映射关系的 Set 视图。
// 然后使用 getkey()和getvalue()两个方法找对应的键和值
2. Set<K> keySet()
// 返回此映射中所包含的键的 Set 视图。
//然后通过 V get(Object key)该方法通过key(键)找到对应的值
1.HashMap
基于哈希表的 Map 接口的实现。并允许使用 null 值和 null 键。元素唯一,但是无序,元素唯一靠元素重写hashcode()和equals()方法来报证
2.TreeMap
底层数据结构是红黑树,元素唯一,而且还能对元素进行排序(自然排序,比较器排序)
排序的元素必须实现comparable接口的comapreTo()方法(一般采用匿名内部类的方式)
3.LinkedHashMap
底层的数据结构有哈希表和链表保证 元素有序且唯一
二.collections
针对集合操作的工具类
此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。
常用方法
static void reverse(List<?> list)
//反转指定列表中元素的顺序。
static void shuffle(List<?> list)
// 使用默认随机源对指定列表进行置换。
三.异常类(throwable)
1.Exception
子类(1)编译时期异常只要不是RunTimeException都属于编译时期异常
例 如:IOException(IO流中的),ParseException(解析异常)
(2)运行时期异常(RuntimeException)
例如:NullPointerException:空指针异常!
处理方式
(1)try{...}catch{...}
//标准格式:
try{....
}catch{....
}finally{...
}//finally一定会执行,除非jvm退出
变形:
try...catch
try...catch...catch
try...finally...(多线程的时候:Lock锁)
针对多个异常
方法一:
分别进行try...catch
方法二:
try...catch...catch
(2)throws
在方法声明上抛出异常,由于,编译时期异常,调用者必须要处理
注意:实际开发中尽量不要在main()方法上抛出异常
throw和throws的区别
throws抛出异常,在方法上抛出后面可以跟多个异常(类名)中间用逗号隔开,表示异常的一种可能性
throw抛出异常,在方法中抛出后面跟异常对象(匿名),表示异常的必然性
自定义异常类
自定义一个类,继承自Exception或者继承自RuntimeException
public class MyException extends Exception {
public MyException(){
}
public MyException(String message){
super(message) ;
}
}
2.error
一般为较为严重的问题,此处不做讨论
3.final.finalize.finally
final终态的最终的
修饰成员变量,改变量不能被修改
修饰成员方法,该方法不能被重写
修饰类,该类不能被继承
finalize
它表示通过gc垃圾回收器回收不用的对象或者是变量,System.gc():实质,调用的是重写了Object类中finalize()方法,表示回收没有跟多引用对象或者变量等等…
finally
不能单独使用和try…catch…finally中一块使用,(异常,IO,数据库中中使用的),是用来释放资源
finally中的代码一定会执行,并且除非Java虚拟机Jvm退出了,才不会执行!
四.File类
1.构造方法
public File(String pathname)
//给定路径名以字符串来表示当前这个文件或者文件夹(开发中推荐使用第一种构造方法)
public File(String parent,String child)
//根据 parent 路径名字符串和 child 路径名字符串创建一个新 File对象
public File(File parent, String child)
//根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例
2.常用方法
文件创建
public boolean mkdir()创建此抽象路径名指定的目录(文件夹)。
如果当前某个盘符下已经有了这个目录(文件夹),不会在创建了.
public boolean createNewFile()throws IOException:创建文件的,如果已经有这个文件了,不在创建,并且该方法本身就会编译时期异常IOException
public boolean mkdirs()创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。(创建文件夹,文件夹不存在,才开始创建)
重命名
public boolean renameTo(File dest)重新命名此抽象路径名表示的文件。
当两个文件的路径名一样是只是重命名
当两个文件的路径不一样时,有剪贴功能
判断功能
public boolean isDirectory():
//判断是否是文件夹 经常用到
public boolean isFile():
//判断是否是一个标准文件 经常用到
public boolean canRead():判断是否可读
public boolean canWriter():判断是否可写
public boolean isHidden():判断是否是隐藏文件
public boolean isAbsolute():判断次路径名是否是绝对路径
获取功能
File类中的获取功能:
public File getAbsolutePath():获取当前文件或者文件夹绝对路径
public String getPath():获取相对路径
public long length()返回由此抽象路径名表示的文件的长度
public long lastModified()返回此抽象路径名表示的文件最后一次被修改的时间
public String getName():获取名称
删除功能
public boolean delete()删除此抽象路径名表示的文件或目录
高级获取功能
File类的高就获取功能:
public String[] list():返回对象是一个字符串数组,当前哪个一盘符下的所有的文件以及文件夹的字符串名称数组
public File[] listFiles():返回对象是一个File数组,当前哪个盘下的所有的文件以及文件夹的File数组
文件名称过滤器
引出:文件名称过滤器 -------Javaweb中将过滤器以及上传和下载.
public String[] list(FilenameFilter filter)
public File[] listFiles(FileFilter filter)
参数是一个接口,(开发中使用的接口的匿名内部类的方式)
实现一个方法:
boolean accept(File dir, String name):这个方法的返回值是true(就是表示要将当前文件夹或者文件的名称添加数组中),false(表示不添加数组中)
五.IO流
概括
设备(硬盘)与设备(内存)之间的数据传输
按流的方向分:
输入流:读数据
输出流:写数据
按数据类型分:
字节流:
字节输入流:InputStream
字节输出流:OutputStream
字符流
字符输入流:Reader
字符输出流:Writer
写数据的方法
针对输出流中写数据的方法:
public abstract void write(int b):将指定的字节写入到输出流中
public void write(byte[] b):将指定的字节数组写入到输出流中
public void write(byte[] b, int off,int len):将字节数组的一部分写入到输出流中
换行
需要写入换行符号,每一个系统他们对应IO这块换行符号是不一样的
对于windows操作系统来说:换行符号:\r\n
对于Linux操操作系统来说:\n
对于Mac操作系统来说:\r