内容
ⅠSet接口
Ⅱ错误error和异常exception
具体内容
ⅠSet接口
1.分类Set集合主要包括HashSet
TreeSet
实现比较 需要添加CompareTo接口
(1)HashSet的特点
不允许存储重复的元素
没有索引,没有带索引的方法,也不能使用普通的for循环遍历
是一个无序的集合,存储元素和取出元素的顺序有可能不一致
底层是一个哈希表结构(查询的速度非常的快)
(2)TreeSet是可以排序的集合,继承了AbstractSet抽象类
TreeSet是基于TreeMap实现的,TreeSet的元素支持2种排序方式:自然排序或者根据提供的Comparator进行排序
2.Set接口的特点:
(1)不允许存储重复的元素
(2)没有索引,没有带索引的方法,也不能使用普通的for循环遍历
3.使用迭代器遍历set集合
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
Integer n = it.next();
System.out.println(n);
}
使用增强for遍历set集合
System.out.println("------------------");
for (Integer i : set) {
System.out.println(i);
4.HashMap集合存储数据的特点:键key-值value 一个键对应一个值
HashMap应用如下
// key不能重复 可以是任意的对象类型 通常使用字符串String
HashMap<String, Integer> score1 = new HashMap<>();
// 添加对象:添加键值对
score1.put("Chinese", 89);
score1.put("Math", 79);
score1.put("English", 29);
// 更改某个键对应的值
score1.put("Chinese", 81);
// 获取键值对的个数
score1.size();
// 获取所有的key 使用keySet
System.out.println(score1.keySet());
// 获取所有的value 使用values
System.out.println(score1.values());
// 获取Entry:key-value 和直接打印score1结果entrySet为[] 直接打印score1为{} 内容相同都为键值对
System.out.println(score1.entrySet());
System.out.println(score1);
// 获取一个键key对应的值
System.out.println(score1.get("English"));
// 键值对的遍历
// 1.通过遍历key来得到每一个key对应的值
for (String key : score1.keySet()) {
//通过key得到值
int s = score1.get(key);
System.out.println("key:" + " value:" + s);
}
// 2.通过entrySet 得到Entry对象的集合 Entry为一个类型
// 一个Entry管理一个键值对 getKey getValue
Set<Map.Entry<String, Integer>> entrys = score1.entrySet();
for (Map.Entry entry : entrys) {
//得到Entry对应的key
String key = (String) entry.getKey();
//获取Entry对应的值
Integer value = (Integer) entry.getValue();
}
Ⅱ错误error和异常exception
1.异常的定义
异常是程序本身可以处理的异常,该事件会在程序执行过程中发生,影响了程序的正常执行
大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题
2.错误的定义
错误是程序无法处理的错误,表示运行应用程序中较严重问题
3.错误和异常的分类
4.使用try-catch语句捕获异常
try {
// 可能会发生异常的程序代码
} catch (Type1 id1){
// 捕获并处置try抛出的异常类型Type1
}
catch (Type2 id2){
//捕获并处置try抛出的异常类型Type2
}
5.try-catch-finally语句
try {
// 可能会发生异常的程序代码
} catch (Type1 id1) {
// 捕获并处理try抛出的异常类型Type1
} catch (Type2 id2) {
// 捕获并处理try抛出的异常类型Type2
} finally {
// 无论是否发生异常,都将执行的语句块
}
具体如下
圆括号只能添加可以关闭的对象
//实现了Closeable接口的对象
//如果出现异常 系统自动就关闭这个资源
try (FileReader fr1 = new FileReader("d")) {
//使用对象
} catch (IOException e) {
e.printStackTrace();
}
try {
TException.test();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
6.抛出异常
(1)抛出异常的介绍
任何Java代码都可以抛出异常,从方法中抛出的任何异常都必须使用throws子句
(2)throws抛出异常
throws语句用在方法定义时声明该方法要抛出的异常类型,如果抛出的是Exception异常类型,则该方法被声明为抛出所有的异常,多个异常可使用逗号分割
7.finally代码块不管有没有异常都会被执行
FileReader fr = null;
try {
int c = b / 1;
System.out.println("hello");
fr = new FileReader("");
} catch (ArithmeticException e) {
System.out.println(e.getMessage());
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
fr.close();
} catch (IOException i) {
}
}
8.Throwable类中的常用方法
getCause():返回抛出异常的原因,如果cause不存在或未知,则返回 null
getMeage():返回异常的消息信息
printStackTrace():对象的堆栈跟踪输出至错误输出流,作为字段 System.err的值