Common data structures include: java interview - data structure, Hashtable, Concurrentjava interview - data structure.
(Related video sharing: java teaching video)
Let’s introduce them separately:
java interview - data structure
<key></key>
) , which has a reference from the current element to the next element, which forms a linked list. The length of java interview - data structure is 2 raised to the nth power in order to make all bits of the binary value of length-1 complete. is 1. In this case, when the hash value and (table.length - 1) perform an & operation to calculate the index, the result is equivalent to the value of the last few digits of the hashcode. At this time, as long as the input hashcode itself is evenly distributed, the Hash algorithm The result is uniformity. Therefore, the default length of java interview - data structure is 16 to reduce the probability of hash collision, and it is also a suitable size.
Comparison point | java interview - data structure | Hashtable |
---|---|---|
Implementation principle | See the previous section | It is almost the same as the implementation principle of java interview - data structure |
Key and Value | Allow Key and Value to be null | Do not allow Key and Value to be null |
Expansion strategy | 2x expansionoldThr
|
2x1 expansion(oldCapacity
|
Safety | Thread-unsafe | Thread-safe |
Hashtable thread-safety strategy is very expensive to implement. All related operations of get/put are synchronized, and the performance is very poor in highly competitive concurrency scenarios.
Concurrentjava interview - data structure is a thread-safe and efficient java interview - data structure implementation provided in the Java concurrent package. It adopts a very sophisticated Segmentation Lock strategy, The backbone of Concurrentjava interview - data structure is the Segment array. Segment inherits from ReentrantLock and is a reentrant lock. Each Segment is a sub-hash table, and a HashEntry array is maintained in the Segment. In a concurrent environment, there is no need to consider lock competition when operating data from different Segments.
(Recommendations for more related interview questions: java interview questions and answers)
B tree: see database sectionhttps://blog.csdn.net/u012102104/article/details/79773362
Balanced Binary Tree (AVL tree): The absolute value of the depth difference between the left and right subtrees of each node does not exceed 1.
Huffman tree: The binary tree with the smallest weighted path length is called the optimal binary tree. The Huffman tree construction is not unique, but the sum of the weighted path lengths of all leaf nodes is the smallest.
Red-black tree: a self-balancing binary search tree, its properties are:
There cannot be two consecutive red nodes on all paths from each leaf to the root
// 1. 先序遍历算法 DLRvoid Preorder ( BinTree bt ) { if ( bt ) { visit ( bt->data ); Preorder ( bt->lchild ); Preorder ( bt->rchild ); }}// 2. 中序遍历算法 LDRvoid Inorder ( BinTree bt ) { if ( bt ) { Inorder ( bt->lchild ); visit ( bt->data ); Inorder ( bt->rchild ); }}// 3. 后序遍历 LRDvoid Postorder ( BinTree bt ) { if ( bt ) { Postorder ( bt->lchild ); Postorder ( bt->rchild ); visit ( bt->data ); }}// 4. 按层次遍历。/* 思路:利用一个队列,首先将根(头指针)入队列,以后若队列不空则取队头元素 p, 如果 p 不空,则访问之,然后将其左右子树入队列,如此循环直到队列为空。*/void LevelOrder ( BinTree bt ) { // 队列初始化为空 InitQueue ( Q ); // 根入队列 EnQueue ( Q, bt ); // 队列不空则继续遍历 while ( ! QueueEmpty(Q) ) { DeQueue ( Q, p ); if ( p!=NULL ) { visit ( p->data ); // 左、右子树入队列 EnQueue ( Q, p->lchild ); EnQueue ( Q, p->rchild ); } }}// 非递归遍历二叉树一般借助栈实现
Related recommendations: java introductory tutorial
The above is the detailed content of java interview - data structure. For more information, please follow other related articles on the PHP Chinese website!