随笔分类 - 面试题
摘要:不是线程安全的操作。它涉及到多个指令,如读取变量值,增加,然后存储回内存,这个过程可能会出现多个线程交差从而导致值的不正确。
阅读全文
摘要:lnteger对象会占用更多的内存。Integer是一个对象,需要存储对象的元数据。但是 int是一个基本数据类型的数据,所以占用的空间更少。
阅读全文
摘要:安全性 Hashtable是线程安全,HashMap是非线程安全。 HashMap的性能会高于Hashtable,我们平时使用时若无特殊需求建议使用HashMap,在多线程环境下可以使用Hashtable. 是否可以使用null作为key Hashtable不允许null作为 key, 而HashM
阅读全文
摘要:Collection是一个接口,它是 Set、List等容器的父接口; Collections是个一个工具类,提供了一系列的静态方法来辅助容器操作,这些方法包括对容器的搜索、排序、线程安全化等等。
阅读全文
摘要:ArrayList查询速度比LinkedList要快. 相对于ArrayList , LinkedList插入和删除是更快的。 LinkedList需要更多的内存,
阅读全文
摘要:“==”操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用“==”操作符。 如果a和 b都是对象,则 a==b 是比较两个对象的引用。。 equals方法是用于比较两个独立对象的内容是否相同,就好比去比
阅读全文
摘要:简单的来讲 HashCode 就像是一个签名,当两个对象的 Hashcode一样的时候,两个对象就可能一样,但如果Hashcode不一样,那么肯定不是同一个对象。相当于先确定一个大的范围,再用equals去比较。 hashcode可以减少equals 比较的次数,提高运算效率。(equals方法效率
阅读全文
摘要:final是一个修饰符,可以修饰变量、方法和类。如果 final修饰变量,意味着该变量的值在初始化后不能被改变。 finally是一个关键字,与try和 catch一起用于异常的处理。finally块一定会被执行,无论在 try块中是否有发生异常。 finalize方法是在对象被回收之前调用的方法,
阅读全文
摘要:什么条件下扩容? HashMap中最主要的数据结构是数组,一般情况下HashMap的元素是方数组上的。如果数组已经有元素,那么就发生了Hash 冲突,那么就会使用链表或红黑树的结构进行存储。 当然HashMap 中数组的默认大小是16,如果不断的插入元素,那么Hash冲突就会很频繁,所以这个时候就需
阅读全文
摘要:HashMap的数据结构 JDK1.7及之前HashMap底层是数组和链表 JDK1.8及以后HashMap底层是数组和链表以及红黑树 JDK1.8什么时候链表会转化成红黑树? HashMap在元素比较少的时候,也只会有数组+链表的结构。当链表的长度大于8,HashMap可能会做树化(链表转变成红黑
阅读全文
摘要:sleep是线程中的方法,但是wait是Object 中的方法。 sleep方法不会释放锁,但是wait会释放锁。 sleep方法不依赖于同步器synchronized,但是wait需要依赖synchronized关键字。 sleep不需要被唤醒(休眠之后推出阻塞),但是wait需要(不指定时间需要
阅读全文