List、Set和Map
List:有序不唯一,有重复元素,但有序
Set:无序不重复
Map:键值对,key唯一,value不唯一,即不同key可能有相同的value
Object
Clone:浅克隆,类必须实现Cloneable
接口才能克隆,否则报异常CloneNotSupportException
wait:等待,某个线程进入等待状态
notify:唤醒某个等待队列的线程
notifyAll:唤醒所有等待队列的线程
hashCode:重写equals
方法一般都要重写hashCode
,注意equals判断相等,则hashCode判断也一定相等,但hashCode相等equals不一定相等,例根据hash值找到某个对象存储区域,先根据hash值判断区域是否已被其他对象占用,占用然后再通过equals方法比较
equals:判断值是否一致
finalize:对象销毁前的工作(资源释放),例当一个对象打开了一个文件,在对象被回收前,应该关闭文件,可以通过finalize
函数来发现未关闭文件的对象,并对其进行处理
数组和ArrayList
ArrayList:动态数组,无需指定数组容量,容量不足还会自动扩容
数组:初始化必须指定容量
HashMap的长度为什么2的N次方
减少hash值碰撞,hash%length == hash&(length-1)
,&效率高
HashMap和ConcurrentHashMap
相同:都是keyvalue
结构
不同:
HashMap
不安全,ConcurrentHashMap
安全HashMap1.8
之前底层数据结构数组+链表;1.8后数组+链表/红黑树,容量达到64后,并且链表中元素个数达到8,会选择链表转换为红黑树ConcurrentHashMap1.8
之前数据结构大数组(segment
)+小数组(hashEntry
)+链表,线程安全使用synchronize
,1.8后数组+链表+红黑树,线程安全使用CAS(compare and swap)