关闭

JAVA知识回顾-3(HashMap、HashTable、ConCurrentHashMap、TreeMap、LindedHashMap、Collection、finally的执行)

标签: java回顾
307人阅读 评论(0) 收藏 举报
分类:

JAVA知识回顾总结-第三天

HashMap和HashTable的区别

  1. HashTable基于Dictionary类,HashMap是Map接口的一个实现类
  2. 主要的区别是:HashTable的方法是同步的,而HashMap的方法不是。
  3. HashMap可以允许有一个Key值为null

HashMap和ConCurrentHashMap的区别,HashMap的底层源码

  1. ConCurrentHashMap和HashMap很相似,但是ConCurrentHashMap支持在运行时修改集合对象。比如可以在迭代器遍历时对集合对象进行增删,而HashMap会抛出java.util.ConcurrentModificationException(迭代器遍历集合对象时的修改异常)
  2. HashMap的底层源码
    • HashMap底层是数组,而且是一个Entry类型的数组

TreeMap、HashMap、LindedHashMap的区别

  • TreeMap取出来的是排序后的键值对
  • 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的
  • LinkedHashMap是HashMap的子类,保存了记录的插入顺序,可以实现输出的顺序和输入的相同

Collection包结构、与Collections的区别

  • Collection是接口是各集合的父接口,Collections是类,包含各有关集合操作的静态方法
  • Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,Collections是一个包装类(工具包),它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,用于对集合中元素进行排序、搜索以及线程安全等各种操作,服务于Java的Collection框架。

try…catch…finally、try里有return、finally还执行么?

  1. 实际行动来检验

    • 代码如下
    public class three {
    
    public static void main(String[] args) {
        fun();
    }
    static void fun()
    {
        try {
            System.out.println("代码段");
            return;
        } catch (Exception e) {
    
        }finally {
            System.out.println("finally执行");
        }
    }
    }
    

    • 结果

    代码段
    finally执行

  2. 可以看出finally还是执行了

  3. 科普一下
    • 在try中没有异常的情况下try、catch、finally的执行顺序 try — finally
    • 如果try中有异常,执行顺序是try — catch — finally
    • 如果try中没有异常并且try中有return这时候正常执行顺序是try —- finally — return
    • 如果try中有异常并且try中有return这时候正常执行顺序是try—-catch—finally— return
    • 总之 finally 永远执行!
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:13136次
    • 积分:401
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:0篇
    • 译文:0篇
    • 评论:5条
    文章分类
    文章存档
    最新评论