java collection
czj4451
这个作者很懒,什么都没留下…
展开
-
ArrayList 源码分析
ArrayList的内部实现是Object数组,当插入对象时会检查数组长度是否够,不够会创建个更大的数组并拷贝原来数组的所有元素。检索速度快;插入、删除速度慢:被插入或删除的元素离ArrayList尾部越远,耗费的性能会越大(因为移动的子数组越大)。 size()和数组的长度是不同的: size是指有效元素的个数,小于或等于数组的长度。 [color=violet][size=med...原创 2012-04-24 15:27:43 · 58 阅读 · 0 评论 -
Arrays 的使用
1. 比较数组 在两个数组上调用equals,比较的是两个数组的地址;可以使用Arrays.equals(arrayA, arrayB)来比较数组的内容: [code="java"] String str = "astronomer"; char[] chars = {'a','s','t','r','o','n','o','m','e','r'}; char[] chars2 ...原创 2012-06-02 14:13:06 · 55 阅读 · 0 评论 -
LinkedHashMap 源码分析
Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)或者是从近期访问最少到近期访问最多的顺序(访问顺序)。 LinkedHashMap性能很可能比 HashMap 稍逊一筹,不过这一点例外:LinkedHashMap 的 c...原创 2012-07-06 09:59:18 · 61 阅读 · 0 评论 -
List 迭代过程中删除或添加元素
[size=medium]1. List 迭代过程中删除元素采用[color=red]list.remove(obj)[/color]会造成其size自减,[color=red]modCount[/color]自增而产生问题:[/size] [code="java"] Collection list = new ArrayList(); list.add("creek"); list....原创 2012-04-04 21:54:18 · 424 阅读 · 0 评论 -
HashMap源码分析
size记录了所有键值对的数目,包括数组(内部实现)中的和数组某些位置附属链表(hash值相同,不允许覆盖已存在的键值对,所以要以链表形式附加)中的键值对。 HashMap的内部实现是数组+链表,通过键的hash值来定位键值对在数组中的位置,是一种离散结构,所以数组的某些索引上没有存储元素。 1. 默认参数: [code="java"] // 默认初始容量 - 必须是2的乘...原创 2012-11-08 15:17:57 · 58 阅读 · 0 评论 -
LinkedList源码分析
LinkedList适用于添加、删除比较频繁,随机访问不多的场合。 LinkedList扩展了AbstractSequentialList抽象类(提供了部分List接口的实现),实现了List,Deque,Cloneable,java.io.Serializable接口。 [code="java"] public class LinkedList extends Abstrac...原创 2012-09-02 22:20:58 · 67 阅读 · 0 评论 -
ArrayDeque 源码分析
ArrayDeque不是线程安全的。 ArrayDeque不可以存取null元素,因为系统根据某个位置是否为null来判断元素的存在。 当作为栈使用时,性能比Stack好;当作为队列使用时,性能比LinkedList好。 [color=violet]1.[/color] 两个重要的索引:head和tail [code="java"] // 第一个元素的索引 priv...原创 2013-01-24 16:47:54 · 109 阅读 · 0 评论