![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码解析
StubbornAnt
这个作者很懒,什么都没留下…
展开
-
Java String源码解析
String类概要所有的字符串字面量都属于String类,String对象创建后不可改变,因此可以缓存共享,StringBuilder,StringBuffer是可变的实现String类提供了操作字符序列中单个字符的方法,比如有比较字符串,搜索字符串等Java语言提供了对字符串连接运算符的特别支持(+),该符号也可用于将其他类型转换成字符串。字符串的连接实际上是通过StringBuffer或原创 2016-05-30 10:14:31 · 4627 阅读 · 0 评论 -
java Stack源码解析
本源码解析基于JDK1.7概要Stack是基于Vector实现的first-in-last-out数据结构Stack用同步来实现了线程安全,因此在单线程情况下该类会由于加锁开销而效率低Stack在Vector的基础上增加了五个方法 push 入栈pop 出栈peek 取栈顶元素empty 判断栈空search 返回某个元素距离栈顶的距离JDK提供了更为原创 2016-06-16 15:51:15 · 650 阅读 · 0 评论 -
ConcurrentHashMap源码解析
本源码解析基于JDK1.7,参考[HashMap]HashMap,HashTable概要ConcurrentHashMap实现了HashTable的全部方法,且是线程安全的MapHashTable的put,get等方法都是同步的,效率较低,ConcurrentHashMap通过对table进行分段加锁,当一部分在修改时,其他部分可以同时的操作,在保证线程安全的情况下提高了效率concurren原创 2016-06-14 11:54:48 · 1240 阅读 · 0 评论 -
java HashTable源码解析
Hashtable 概要与HashMap主要区别是Hashtable的put,get方法都是同步的,线程安全,但是性能较差key和value都不能为null,HashMap中key与value都可以为 null与HashMap类似,key必须实现hashCode()和equals方法,由于equals判断前都会先判断hashCode方法是否相等,两个equals的对象的hashCode()必须原创 2016-06-14 17:18:08 · 1454 阅读 · 2 评论 -
java LinkedHashMap源码解析
本源码解析是基于JDK1.7,本篇与HashMap源码解析较强的关联性LinkedHashMap概要LinkedHashMap是基于HashTable与LinkedList原理实现的HashMap是基于数组的,而LinkedHashMap是基于循环双向链表的,即每个节点都有指向前后节点的指针,header节点是不含真实元素的标兵节点,由于每次插入都是在header的前面,header.befo原创 2016-06-13 19:01:43 · 1639 阅读 · 0 评论 -
java TreeMap源码解析
TreeMap 概要基于红黑树的NavigableMapput,get,remove,containsKey操作时间复杂度 log(n)提供给SortedMap的比较器或者自身的比较函数必须与equals方法一致,因为对于SortedMap,是否相等是基于compare或者compareTo方法的,如果compare方法与equals方法不一致,SortedMap也可以工作,只是与Map接口(原创 2016-06-13 11:07:05 · 1708 阅读 · 0 评论 -
java 枚举源码解析
应用场景枚举通常用来列举一个类型的有限实例集合,我们可以使用常量集来实现,jdk1.5添加了枚举(enum)支持,解决了常量集的一些缺陷 - 常量集中的变量不会必然在指定的范围内 - 常量能够提供的功能很少,难于使用 - 常量意义不明确,没有名字 - 修改或增加枚举值后需要修改的代码多,不便于维护 关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的组原创 2016-05-23 12:23:12 · 1932 阅读 · 0 评论 -
ArrayList 源码解析
本解析源码来自JDK1.7ArrayList 概要继承Collection接口,实现了随机存取,自动扩容内部使用数组进行存储,size表示List中元素的个数 private transient Object[] elementData; private int size;允许null值与Vector基本相同,但是ArrayList是非同步的,原创 2016-05-17 11:14:52 · 2962 阅读 · 0 评论 -
Java HashSet源码解析
本解析源码来自JDK1.7,HashSet是基于HashMap实现的,方法实现大都直接调用HashMap的方法 实现了Set接口,实际是靠HashMap实现的不保证遍历时的顺序,不保证集合顺序的不变性HashSet允许出现null值假定Hash算法能很好的分散元素,查询的时间复杂度为O(1)遍历的时间复杂度由set的size和其依靠的HashMap的原创 2016-06-01 11:19:38 · 3256 阅读 · 0 评论 -
HashMap源码解析
本解析源码来自JDK1.7HashMap概要HashMap是基于hash的map接口的非同步实现,允许使用null键和null值,不保证映射顺序HashMap类头部public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable设计初衷 Java中的原创 2016-05-13 16:28:41 · 4377 阅读 · 1 评论 -
LinkedList源码解析
本解析源码来自JDK1.7 LinkedList许多方法是为了适配其实现的接口,本质上都是双向链表的操作LinkedList概要基于双向链表,主要实现了List和Deque接口,Deque接口继承自Queue,所以LinkedList同时实现了Queue接口由于其基于双向链表,操作需要操作连接指针数数较多,所以线性操作系数比ArrayList较大插入删除快,随机访问慢线程不安全,修改列表结原创 2016-05-17 17:41:24 · 3102 阅读 · 0 评论 -
java ArrayList与Vector
本文基于JDK1.7Vector与ArrayListVector用同步实现了线程安全,ArrayList是线程不安全的,但是可以通过Collections.synchronizedList(list)来实现线程安全,不要求线程安全的场景用ArrayList效率更高Vector与ArrayList一样是一种可以根据需要自动伸缩的列表,它们都是基于数组实现的,加入了自动扩容机制Vector在初始化原创 2016-06-16 16:53:59 · 608 阅读 · 0 评论