JAVA高级开发工程师面试系列——Java的数据结构

数组

相同数据类型的元素按一定顺序排列的集合,是一块连续的内存空间。优点:get和set的时间复杂度是O(1);缺点:add和remove的时间复杂度是O(n)

链表

非连续、非顺序的结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,链表有一系列点组成。优点:add和remove的时间复杂度是O(1);缺点:get和set的时间复杂度是O(n)

队列

队列是一种特殊的线性表,特殊之处是它只允许在表的前端进行删除操作,而在表的后端进行删除操作,亦即所谓的先进先出(FIFO)。Java中LinkedList实现了Dueue,可以作为双向队列,PriorityQueue实现了带优先级的队列,亦即队列中的每一个元素都有优先级,且元素按照优先级排序

栈是一种运算受限的线性表,其限制是只允许在表的一端进行插入和删除操作,这一端被称为栈顶,相对的,把另一端称为栈底,它体现了后进先出(LIFO)

集合

集合是指具有某种性质的具体或抽象的对象汇总成的集体,这些对象称为集合的元素,其主要特性是不可重复。在Java中HashSet体现了这种数据结构,而HashSet是在HashMap的基础上构建的。LinkedHashSet继承了HashSet,使用HashCode确定在集合中的位置,使用链表的方式确定位置,所以有顺序。TreeSet实现了SortedSet接口,是排好序的集合(在TreeMap基础上构建),因此查找操作比普通的HashSet要快(Log(n)),插入操作要慢(Log(n)),因为要维护有序。

散列表

散列表也叫哈希表,是根据关键键值(key-value)进行访问的数据结构,它通过把关键码值映射到表中的一个位置来访问记录,以加快查找的速度,这个映射函数就叫做散列函数。

二叉树,排序二叉树,红黑树,平衡二叉树AVLTree,二叉查找树binary tree search,平衡多路查找树B-Tree

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值