Android Day17 Java中Set接口及异常处理

内容

ⅠSet接口
Ⅱ错误error和异常exception

具体内容

ⅠSet接口

1.分类
Set分类

Set集合主要包括HashSet
TreeSet
实现比较 需要添加CompareTo接口

(1)HashSet的特点
不允许存储重复的元素
没有索引,没有带索引的方法,也不能使用普通的for循环遍历
是一个无序的集合,存储元素和取出元素的顺序有可能不一致
底层是一个哈希表结构(查询的速度非常的快)
(2)TreeSet是可以排序的集合,继承了AbstractSet抽象类
TreeSet是基于TreeMap实现的,TreeSet的元素支持2种排序方式:自然排序或者根据提供的Comparator进行排序

2.Set接口的特点:
(1)不允许存储重复的元素
(2)没有索引,没有带索引的方法,也不能使用普通的for循环遍历

3.使用迭代器遍历set集合

    Iterator 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 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> 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的值

你可能感兴趣的:(Android Day17 Java中Set接口及异常处理)