Java面试经常会问到Java数据结构面试题,下面给大家总结一份常考的Java数据结构面试题及答案。
1.Java数据结构常见的有哪些?
常见的会包含:数组、链表、堆栈、队列、哈希表、二叉树等。
2.数组
数组数据结构,如下图所示:
数组按照索引查询元素,速度很快,时间复杂度为O(1)。
添加删除元素的操作很耗时间,时间复杂度为O(n)。
3.链表
Java链表是一种常见的数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针。
链表结是由许多节点构成的,每个节点都包含两部分:
1)数据部分:保存该节点的实际数据;
2)地址部分:保存的是上一个或下一个节点的地址。
比如:Java集合框架里,LinkedList就是使用到了链表。
4.队列
Java队列是一种操作受限的线性表,只允许在表的前端(front)进行删除操作又称作出队,在表的后端进行插入操作,称为入队。
如下图所示:
5.哈希表
哈希表,英文名为:Hash表,也称散列表,是根据键值而直接进行访问的数据结构。
如下图所示:
最典型的就是Java集合框架里的HashMap,底层实现就使用到了哈希表。
6.树
树是非常非常重要的一种数据结构,大家熟知的二叉树、红黑树等属于树的范畴。
1.二叉树
二叉树作为一种重要的树形结构类型,通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。
如下图所示:
二叉树遍历,会包含如下3种:
2.平衡二叉树
平衡二叉树,英文名Balanced Binary Tree,是一种自平衡的树,也叫AVL树。
平衡二叉树具有以下性质:
- 平衡二叉树规定了左结点小于根节点,右结点大于根节点;
- 并且还规定了左子树和右子树的高度差不得超过1,这样保证了它不会成为线性的链表;
如下图所示:
3.二叉排序树
二叉排序树,英文名Binary Sort Tree,是一种特殊的二叉树,极大的改善了二叉树节点查找的效率,又称为二叉查找树。
二叉排序树具体如下3大特征:
1.它要求节点的左子树小于该节点本身, 右子树大于该节点,每个节点都符合这样的规则;
2.若左子树不为空,左子树上节点值均小于或等于根节点的值;
3.若右子树不为空,右子树上节点值均大于或等于根节点的值;
如下图所示:
4.红黑树
红黑树根节点是黑色,节点是红色或黑色,如下图所示:
红黑树是一种自平衡二叉查找树,红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡。
以上就是常见的Java数据结构面试题及答案,更多的Java面试题及答案,请查看:1000+Java面试题及答案详解。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》