摘要:
介绍Java Executor框架 阅读全文
摘要:
注解简单使用和使用注解的想法。 阅读全文
摘要:
介绍Java枚举类型、提供枚举类型的随机选择器、介绍如何使用接口组织枚举及枚举的枚举。 阅读全文
摘要:
新浪微博短链接口使用、网上对于短链实现的方法的分析 阅读全文
摘要:
Java集合类源码分析汇总贴 阅读全文
摘要:
TreeMap有Values、EntrySet、KeySet、PrivateEntryIterator、EntryIterator、ValueIterator、KeyIterator、DescendingKeyIterator、NavigableSubMap、AscendingSubMap、DescendingSubMap、SubMap、Entry共十三个内部类。Entry是在TreeMap中用于表示树的节点的内部类,已经在《TreeMap源码分析——基础分析》中分析过。下面逐一介绍上面的内部类以及TreeMap中提供的和内部类相关的方法。 阅读全文
摘要:
常见的数据结构有数组、链表,还有一种结构也很常见,那就是树。前面介绍的集合类有基于数组的ArrayList,有基于链表的LinkedList,还有链表和数组结合的HashMap,今天介绍基于树的TreeMap。
TreeMap基于红黑树(点击查看树、红黑树相关内容)实现。查看“键”或“键值对”时,它们会被排序(次序由Comparable或Comparator决定)。TreeMap的特点在于,所得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。 阅读全文
摘要:
在分析Java集合类源码的时候涉及到了树的知识,发现树结构要比数组和链表等要复杂的多,所以巩固和补充一下自己这块的知识。
树(Tree)可以有几种定义。其中一种方式是递归方式。
树(Tree)是n(n≥0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件:
有且仅有一个特定的称为根(Root)的结点;
其余的结点可分为m(m≥0)个互不相交的子集Tl,T2,…,Tm,其中每个子集本身又是一棵树,并称其为根的子树(SubTree)。
从定义中可以看出一棵树是N个节点和N-1条边的结合,其中一个节点叫做根。存在N-1条边是这样得出的:每条边都将某个节点连接到它的父亲,而除去根节点外,每个节点都有一个父亲。
一些树相关的基础定义: 阅读全文
摘要:
Java容器类的用途是“保存对象”,分为两类:Map——存储“键值对”组成的对象;Collection——存储独立元素。Collection又可以分为List和Set两大块。List保持元素的顺序,而Set不能有重复的元素。
本文分析Set中最常用的HashSet类,并简单介绍和对比LinkedHashSet。
首先对Set接口进行简要的说明。
存入Set的每个元素必须是惟一的,因为Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。Set不保证维护元素的次序。Set与Collection有完全一样的接口。
在没有其他限制的情况下需要Set时应尽量使用HashSet,因为它对速度进行了优化。 阅读全文
摘要:
LinkedHashMap类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点;而在迭代访问时反而更快,因为它使用链表维护内部次序(HashMap是基于散列表实现的,相关HashMap的内容可以看《Java集合类》和《HashMap源码分析》)。 阅读全文
摘要:
《Java集合类》一文中已经最List的基本操作进行说明,并且比较了ArrayList和LinkedList的效率。本文将进一步解析LinkedList。
LinkedList也和ArrayList一样实现了List接口,但是它执行插入和删除操作时比ArrayList更加高效,因为它是基于链表的。基于链表也决定了它在随机访问方面要比ArrayList逊色一点。
初次之外,LinkedList还提供了一些可以使其作为栈、队列、双端队列的方法。这些方法中有些彼此之间只是名称的区别,以使得这些名字在特定的上下文中显得更加的合适。 阅读全文
摘要:
在Java集合类中最常用的除了ArrayList外,就是HashMap了。本文尽自己所能,尽量详细的解释HashMap的源码。一山还有一山高,有不足之处请之处,定感谢指定并及时修正。 阅读全文
摘要:
不积跬步,无以至千里;不积小流,无以成江海。从基础做起,一点点积累,加油!
《Java集合类》中讲述了ArrayList的基础使用,本文将深入剖析ArrayList的内部结构及实现原理,以便更好的、更高效的使用它。
ArrayList就是传说中的动态数组,就是Array的复杂版本,它提供了如下一些好处:动态的增加和减少元素、灵活的设置数组的大小......
认真阅读本文,我相信一定会对你有帮助。比如为什么ArrayList里面提供了一个受保护的removeRange方法?提供了其他没有被调用过的私有方法? 阅读全文
摘要:
深入剖析为什么ArrayList会有一个受保护的removeRange(int fromIndex,int toIndex)方法!!! 阅读全文
摘要:
数组是一种很常见的数据结构,开始接触编程的时候多数程序都和数组相关。但很多情况下数组是无法满足需求的:
不知道具体数据长度、需要自动排序、存储键值对,这是就需要使用到Java中一个重要的类库——集合类。本文论述集合类的基础知识,包括基础操作及部分效率问题。 阅读全文