JDK源码
iteye_9461
这个作者很懒,什么都没留下…
展开
-
Java Object equals()方法测试题
在Java中,所有类的基类都是Object,作为JDK源码分析的第一课,今天给一道题来测试下大家对基础的掌握,让大家知道理解JDK源码的重要性。 [code="java"] class Person{ private String name; private int age; public Person(String name, int age){ this.n...原创 2015-10-27 16:23:17 · 182 阅读 · 0 评论 -
Java 非线程安全的集合转线程安全
我们知道List, Set, HashMap都是非线程安全的,有时我们希望它们是线程安全的,如何来解决这个问题呢? 在Collections中有方法使它们变成线程安全的。 [code="java"] public static List synchronizedList(List list) public static Set synchronizedSet(S...原创 2015-12-08 08:30:00 · 195 阅读 · 0 评论 -
JDK Arrays sort
[b]1. List排序的调用[/b] [code="java"]Collections.sort() --> Arrays.sort --> MergeSort()[/code] [b]2. 两种排序策略:Comparable 和 Comparator[/b] [code="java"] public static void sort(List list, ...原创 2015-12-07 21:12:10 · 78 阅读 · 0 评论 -
HashSet 源码解读
[b]1. HashSet底层是怎样实现的呢?[/b] 是HashMap,看看它的构造函数就知道了。 [code="java"]public boolean add(E e) { return map.put(e, PRESENT)==null; }[/code] 这里的[code="java"]PRESENT[/code]是什么呢?再看看它的定...原创 2015-12-07 20:48:25 · 76 阅读 · 0 评论 -
Java HashMap 遍历
我记得当时在Oracle面试时,面试人问我一个HashMap有几种访问方式,我答有两种:一种通过key,另一种是通过Entry。今天总结一下这两种遍历的方式。 [b]1. 最基本的get(Object key)方法[/b] [code="java"] HashMap map=new HashMap(); map.put("name", "test1"); ...原创 2015-12-07 18:59:03 · 137 阅读 · 0 评论 -
Java HashMap源码解析
[b]1. HashMap内存储的元素是Entry,并且Entry是按照链表的形式来存储的。[/b] [code="java"] transient Entry[] table; // 用数组来存储,它的原理是每个数组的元素都是一个链表头 [/code] Entry的定义如下: [code="java"] static class Entry implements Map.En...原创 2015-12-07 18:33:55 · 69 阅读 · 0 评论 -
Java LinkedList
List接口有两个实现,一个是ArrayList,另一个是LinkedList。从字面上就可以看出Array表示 的是数组,Link表示的是链表,区别一目了然,今天看看LinkedList的迭代器的实现。 节点定义: [code="java"] private static class Node { E item; Node next; ...原创 2015-12-03 19:01:50 · 129 阅读 · 0 评论 -
Java ListIterator与iterator的区别
在上一篇中[url]http://gaofulai1988.iteye.com/blog/2261505[/url]介绍了ArrayList iterator的实现,今天再分析另外一个list中特有的迭代器ListIterator。 看看它是如何new的呢。 [code="java"] public ListIterator listIterator() { ret...原创 2015-12-03 18:51:21 · 109 阅读 · 0 评论 -
ArrayList 迭代器模式
在面试中,迭代器被问到了很多次,今天来总结一下。 从一个例子说起。 [code="java"] public static void main(String args[]){ List list=new ArrayList(); list.add(2); list.add(5); list.add(7); ...原创 2015-12-03 18:42:27 · 131 阅读 · 0 评论 -
ThreadPoolExecutor源码分析
1. 构造函数 [code="java"] public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ...原创 2015-11-17 10:30:54 · 62 阅读 · 0 评论 -
Java Object源码
我从JDK中复制了一份Object的源码出来,把其中的注释去掉了。 [code="java"] public class Object { private static native void registerNatives(); static { registerNatives(); } public final native...原创 2015-11-11 18:41:09 · 72 阅读 · 0 评论 -
一道equals题目的解析
在上一篇文章中,有一道题目是判断两个对象的equals判断,具体的链接是这儿[url]http://gaofulai1988.iteye.com/admin/blogs/2252489[/url] 大部分人可能知道第一个输出是false,毫无疑问,==比较对象肯定是地址,对如第二个,有些人可能就不是那么清楚了,因为大部分的初学者的思维里是equals是比较内容的,刚好两个对象的内容都是一样的...原创 2015-10-27 22:18:16 · 151 阅读 · 0 评论 -
JAVA并发框架ReentrantLock与Condition
同步代码与同步代码块可以实现多线程的同步,JAVA并发框架提供另外了一个框架,它也能实现多线程的同步,即是Lock和Condition,Condition和Lock是配合在一起使用,从字面意思上看,Condition是条件锁,有了锁,为什么要引用条件锁呢?原因有两个: 1.对一个共享资源有读和写的能力,如果读线程或写线程获取了Lock的权力,即有能力进入,但是如果里面没有内容,读也没有用,如果空...原创 2015-12-14 22:50:50 · 86 阅读 · 0 评论