Java集合框架读书笔记(五)

PriorityQueue
Java中的PriotiryQueue通过二叉小顶堆实现。Java的优先队列保证每次取出的元素都是队列中权值最小的。大小可以通过自然顺序和传入构造器比较。
在这里插入图片描述
二叉堆完全可以用数组来表示。

add和offer
两个方法语意相同,都是向优先队列中插入元素,只是前者失败会抛出异常,后者则会返回false。
新加入的元素可能会破坏最小堆的性质,因此需要调整。

element和peek
两个函数语意完全相同,都是获取但不删除队首元素。前者抛出异常,后者返回null。直接返回数组0下标那个元素即可。
在这里插入图片描述

remove和poll
这两个函数的方法和语意完全相同,前者失败抛出异常,后者返回null,删除后后需要改变队列的结构来维护最小堆的性质,需要进行调整。
在这里插入图片描述

remove(Object o)
这个方法用于删除队列中根o相等的一个元素,该接口不是Queue接口内的方法,而是collection接口的方法。
整体分为两种情况,1.删除最后一个元素,直接删除即可。2.删除的不是最后一个元素,从删除点开始以最后一个元素为参照调用一次sifDown即可。
在这里插入图片描述

WeakHashMap
从名字就可以看出它是某种Map,它的特殊之处就在于WeakHashMap里的entry可能会被GC自动删除,即使程序员没有调用remove()或者clear()方法。

更直观的说,当使用WeakHashMap时,即使没有显示的添加或者删除任何元素,也可能发生如下情况:
调用两次size()方法返回不同的值。
调用两次 isEmpty()第一次返回false,第二次返回true。
两次调用containsKey(),第一返回false,第二次返回true。
两次调用get()方法,第一次返回一个value,第二次返回null。

那么WeakHashMap有什么用那?
WeakHashMap适用于需要缓存的场景。在缓存场景下,由于内存是有限的,不能缓存所有对象。

工作原理是弱引用,GC判断某个对象是否可被回收的依据是,是否有有效的引用指向该对象。如果没有,那么该对象就是可回收的。仅有弱引用的对象也会被GC回收。

由于没有WeakHashSet,所以可以通过函数将WeakHashMap包装成set。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java SSM(Spring+SpringMVC+MyBatis)是一种基于Java语言的Web开发框架。学习这个框架的过程中,我深刻体会到它的强大和灵活性。 首先,Spring框架为开发者提供了一个强大的IOC(Inversion of Control)容器,它能够管理和注入对象,减少了代码之间的耦合性。通过配置文件或注解,我们可以轻松地定义和获取各种对象,提高了代码的可维护性和可扩展性。 其次,SpringMVC框架是一种MVC(Model-View-Controller)设计模式的实现,它用于处理Web请求和响应。通过配置一个请求映射表和处理器,我们可以将请求分发给相应的控制器进行处理,并将处理结果返回给客户端。SpringMVC还提供了一些便捷的注解和标签,用于简化页面的渲染和参数的绑定。 最后,MyBatis是一种优秀的持久化框架,它能够将数据库操作与Java对象之间的映射简化为简单的配置。通过编写SQL映射文件和定义POJO(Plain Old Java Object)类,我们可以方便地进行数据库的增删改查操作,而无需编写冗长的SQL语句。 在学习Java SSM框架的过程中,我深入理解了软件开发过程中的MVC思想,并学会了如何利用Spring、SpringMVC和MyBatis来实现一个完整的Web应用程序。通过不断的实践和调试,我逐渐培养了自己解决问题和调试代码的能力。 总结起来,学习Java SSM框架使我深入理解了软件开发的各个环节,并提升了我的编码能力和开发效率。我相信这些知识和经验将对我的职业发展和项目实施起到积极的促进作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值