2020-12-18

ArrayList 

1.内部使用的数组

2.add,remove性能差

add(int index,E element)方法和remove(int index,E element)方法调用System.arraycopy(elementData, index,elementData, index +1,

size - index);做位移

3.get查询速度快

arraylist中是连续的内存地址,查询速度都是一样的 (oxff9999+index*字节长度)

LinkedList

1.内部使用的是链表

2.add remove速度快 

插入、删除时只需要改变前后两个节点指针指向即可

3.查询速队比较慢

遍历整个集合速度慢

HashMap

1.内部使用的是数组和链表

2.(key ==null) ?0 : (h = key.hashCode()) ^ (h >>>16)

补充知识点:

&与两个位都为1时,结果才为1

|或两个位都为0时,结果才为0

^异或两个位相同为0,相异为1

~取反0变1,1变0

<<左移各二进位全部左移若干位,高位丢弃,低位补0

>>右移各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)

你可能感兴趣的:(2020-12-18)