![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 88
xyzso1z
这个作者很懒,什么都没留下…
展开
-
LruCache
官方描述LruCache是存储了优先数量的强引用缓存,每次访问一个值的时候,会将其移动到队列的头部,当一个值添加到已经满的队列的时候,会将队列尾部的元素移除掉,让GC回收。如果缓存的值明确的要知道已经释放,需要重写entryRemoved(boolean ,K,V,V)方法,做一些自己的处理。如果在缓存中没有找到一个对应的值,可以通过create(K),简化了调用代码,允许即使是没有找到对应值的情况下能够返回一个值。上面的最主要的就是设置maxSize以及内部的定义的允许访问排序的LinkedH原创 2022-12-08 11:34:12 · 210 阅读 · 1 评论 -
TreeMap
之前已经学习过HashMap和LinkedHashMap了,HashMap不保证数据有序,LinkedHashMap保证数据可以保持插入顺序,而如果我们希望Map可以保持key的大小顺序的时候,我们就需要利用TreeMap了。其大致的结构如下所示:使用红黑树的好处是能够使得树具有不错的平衡性,这样操作的速度就可以达到log(n)的水平了。如果存在的话,old value被替换;如果不存在的话,则新添一个节点,然后对做红黑树的平衡操作。get函数get函数则相对来说比较简单,以log(n)的复杂度进原创 2022-12-07 17:01:13 · 205 阅读 · 0 评论 -
LinkedHashMap
前面对 HashMap 的源码做了分析,我们知道 HashMap 内部的数据结构是数组+单链表/红黑树实现的,这种数据结构是不能保证数据插入的有序性的,因为会对传入的 key 做 hash 运算,通过链表指向的方法去存储数据,这样就导致了遍历数据的时候无法根据我们存入的顺序来读取。先看下继承结构:可以看到LinkedHashMap继承于HashMap,他继承了HashMap的方法和特性,比如内部的默认初始容量、默认负载因子、扩容机制等。但是LinkedHashMap在此基础上又进行了扩展,主要提供了元转载 2022-12-07 16:27:55 · 1303 阅读 · 0 评论 -
HashMap
HashMap的继承广西相对比较简单,继承于AbstractMap实现了Map接口、Cloneable接口、Serializable接口。HashMap是基于哈希表的实现了Map接口,这个实现提供了所有可选的map操作。并且允许键值对均为null。HashMap的一些特点:当我们执行下面的操作:运行结果:下面看下大致的结构,2.2 构造方法在第四个构造方法里面调用了putMapEntries():这里看到了新方法:hash()和putVal(),会在后面发放中记录,先讲下主流程。前面讲了原创 2022-12-06 23:45:29 · 276 阅读 · 0 评论 -
LinkedList
可以先看下官方Api对LinkedList的介绍从图中可以看出,LinkedList实现的接口有:先看下LInkedList的特点,对LinkedList有 一个大体的认识:前面讲了,LinkedList是基于双向链表实现的,所以属性也很简单,定义了大小、头结点和尾结点。看下每个节点的结构:很明显的双向链表的结构。构造方法很简单,没有什么特别的操作 。不指定插入元素的下标(默认插入尾部)在指定位置添加先检查是否在可插入的范围内,不在则抛出异常,如果index和当前size相等,则直接插入到原创 2022-12-05 23:35:14 · 180 阅读 · 0 评论 -
ArrayList源码阅读笔记
1. 基础知识1.1 概念ArrayList是可以动态增长和缩减的索引序列,它是基于数组实现的List类。该类封装了一个动态再分配的Object[]数组,每个对象都有一个capacity属性,表示它们所封装的Object[]数组长度,当向ArrayList中添加元素时,该属性会自动增加。如果向ArrayList中添加大量元素,可使用ensureCapacity()方法一次性增加capacity,可以减少增加重分配的次数提高性能。ArrayList的用法和Vector相似,但Vector是一个原创 2022-12-03 14:39:14 · 160 阅读 · 0 评论 -
java实用技巧
需要Map的主键和取值时,应该迭代entrySet()当循环中只需要Map的主键时,迭代keySet()时正确的。但是,当需要主键和取值时,迭代entrySet()才是更高效的做法,比迭代keySet()后再去get取值性能更佳。Map<String,String> map=...;...原创 2019-10-15 02:51:27 · 181 阅读 · 0 评论 -
Java中的Copy-On-Write容器
Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArra...转载 2018-08-30 11:25:09 · 133 阅读 · 0 评论 -
模拟数据库增删查改功能
1、 系统设计开发过程数据库中有“表”的概念。“表”由若干“行”组成,每“行”由许多“列”组成。一般的数据库都提供了对SQL的支持。我们可以模拟一个最简单版的SQL,只能实现简单的排序,简单的选择条件,列的显示顺序等功能。输入help会打印出帮助信息。可以使用下列命令序列测试它:>load E:\\workspace\\data.txt>add A 11 22 33原创 2017-05-05 11:40:38 · 993 阅读 · 0 评论 -
md5加密
public class Md5Util { /** * 给指定字符串按照md5算法去加密 * @param psd 需要加密的密码 加盐处理 * @return md5后的字符串 */ public static String encoder(String psd) { try { //加盐处理 psd = psd+"mobilesafe"; //1,原创 2017-08-27 20:35:34 · 435 阅读 · 0 评论 -
java中常用的内存区域
java中常用的内存区域在java中主要存在4块内存空间,这些空间内的作用如下:1.栈内存空间:保存所有的对象名称(更确切地说是保存了引用的堆内存空间的地址)。2.堆内存空间:保存每个对象的具体属性内容。3.全局数据区:保存static类型的属性。4.全局代码区:保存所有的方法定义原创 2017-04-21 18:28:37 · 261 阅读 · 0 评论