数据结构

数据结构

概念:栈是一种只能从一端进行插入、删除的线性结构。
特点:“先入后出”,栈的存储模式就像是一个杯子,从杯口倒入水,最前倒入的水最后才被倒出。
操作对象:Stack

常用操作:

 Stack stack = new Stack();            // 创建一个空 Stack
 stack.push("hello");            	   // 入栈方法-压入栈顶-返回:item
 stack.push("machi");            	   // 此时栈中数据为 hello,machi,栈顶为machi
 stack.pop();                          // 删除方法-移除栈顶对象-返回:该对象,栈为空时抛出异常
 stack.peek();                         // 查看栈顶对象,栈对象为空时抛出异常
 boolean flag = stack.empty();         // 测试对象是否为空,返回:boolean

队列

概念:队列是一种只能从表的前端进行插入,表的后端进行删除的线性结构。
特点:“先入先出”,栈的存储模式就像购物排队,最先排队的人,最先购物出队。
操作对象:LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。
常用操作:

 Queue<String> queue = new LinkedList<>();
 queue.add("a");                       // 添加元素-失败时会抛异常
 queue.offer("b");                     // 添加远程-失败时返回false
 queue.offer("c");
 queue.remove();                       // 返回第一个元素,并在队列中删除-失败时会抛异常
 queue.poll();                         // 返回第一个元素,并在队列中删除-失败时返回null
 String fast    = queue.element();     // 返回第一个元素-为空时抛出异常
 String fastTow = queue.peek();        // 返回第一个元素-为空时返回null
  • offer,add 区别:
    一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。
    这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。

  • poll,remove 区别:
    remove() 和 poll() 方法都是从队列中删除第一个元素。remove() 的行为与 Collection 接口的版本相似, 但是新的 poll() 方法在用空集合调用时不是抛出异常,只是返回 null。因此新的方法更适合容易出现异常条件的情况。

  • peek,element区别:
    element() 和 peek() 用于在队列的头部查询元素。与 remove() 方法类似,在队列为空时, element() 抛出一个异常,而 peek() 返回 null。

HashMap

JDK1.8以前的HashMap结构
上图是JDK1.8以前的数据结构,是数组+单链表的存储,存储数据时首先根据pos=key%size来获得此次插入获取插入的下标,将数组存储到数组pos下标中,但pos值相同了怎么办呢?HashMap会将相同的pos值存储值单链表中。单链表的查询时间复杂度是O(n),当单链表达到一定深度时,以为着需要将单链表中的每一个元素都遍历一遍,就无法达到HashMap的快速查询的原则。在JDK1.8对该问题进行的优化:

在这里插入图片描述
上图是HashMap在JDK1.8的数据结构,针对上述的问题JDK1.8加入了红黑树,红黑树是一种特殊的高度平衡二叉树,解决了之前单链表查询深度的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值