Java collections source code learning note
Summary
https://docs.google.com/spreadsheets/d/1RrJplFDo4eUL97iUsypflmbEnVFG2VhLAe-VERYTwzg/edit?usp=sharing
Reference
1 HashMap
| Short description | Link |
|---|---|
| Time Complexity of HashMap methods | https://stackoverflow.com/questions/4577998/time-complexity-of-hashmap-methods |
| Time Complexity of HashMap get() | https://skyfly.xyz/2020/02/25/Java/HashMapTimeComplexity/ |
| Understanding HashMap resize() | https://segmentfault.com/a/1190000015812438 |
| The main document that I learn HashMap | https://blog.csdn.net/v123411739/article/details/78996181 |
| Another document contains some interview questions | https://blog.csdn.net/v123411739/article/details/115364158 |
| A document with illustration (need to login CSDN) | https://blog.csdn.net/yinwenjie/article/details/102531402 |
Questions:
- Didn’t clearly learn the remove() method.
- For the tableSizeFor(), it is changed after java 8. But I don’t know how to locate the version of a code change.
- After the sharing
- The actual binary calculation progress of the capability of Map. For example capability is 32, so binary is what?
- For example, 111 is 7. But 7 cannot be the capacity.
- What is amortized time complexity?
- The actual binary calculation progress of the capability of Map. For example capability is 32, so binary is what?
Problems solved:
- The difference between
(n - 1) & hashand(e.hash & oldCap) == 0by readingUnderstanding HashMap resize(). - The time complexity for put() get() delete() is from O(1) to O(k), the key can be a bin’s Linked List or the height of the red black tree.
2 ArrayList
| Short description | Link |
|---|---|
| A main document that I’ve studied | https://blog.csdn.net/zxt0601/article/details/77281231 |
| Another ArrayList docs that I didn’t read too much | https://blog.51cto.com/u_13604316/2673349 |
Questions:
- Will System.arrayCopy got overlap? In linux, there are 2 way to copy the memory, one of them can cause overlap and data loss.
- Will ArrayList shrink?
- What is System.arrayCopy’s space complexity?
Problem solved:
- How ArrayList insert an value?
- grow() -> System.arrayCopy the second half -> Insert the target value to the middle empty slot
3 LinkedList
| Short description | Link |
|---|---|
| A main document that I’ve studied | https://blog.csdn.net/zxt0601/article/details/77341098 |
Questions:
- Why LinkedList didn’t implement the isEmpty() method directly?
Problem solved:
- How LinkedList treat the value that is null?
- LinkedList can find the index based on the keyObject.equals().
For example,
LinkList.indexOf(Object o). When we input indexOf(null), it need to avoid calling null.equals(). And use == instead. LinkedList.contains()also callsindexOf(Object o)
- LinkedList can find the index based on the keyObject.equals().
For example,
4 PriorityQueue
| Short description | Link |
|---|---|
| PriorityQueue source code analysis doc with a little problem | https://blog.csdn.net/codejas/article/details/85144502 |
This PriorityQueue source code analysis doc with a little problem has a problem of saying that PriorityQueue is min-heap.
But actually, the PriorityQueue is max heap.