From 8104fbb16c2eb9fc73c5d433d6e2c8dc104b399b Mon Sep 17 00:00:00 2001 From: liuwen <15665334889@163.com> Date: Mon, 9 Mar 2020 23:07:29 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../week_01/74/ArrayList.txt | 13 ++++++- second/week_01/74/LinkedList.txt | 37 +++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) rename "second/week_01/74/\345\255\246\344\271\240\347\254\224\350\256\260.txt" => second/week_01/74/ArrayList.txt (80%) create mode 100644 second/week_01/74/LinkedList.txt diff --git "a/second/week_01/74/\345\255\246\344\271\240\347\254\224\350\256\260.txt" b/second/week_01/74/ArrayList.txt similarity index 80% rename from "second/week_01/74/\345\255\246\344\271\240\347\254\224\350\256\260.txt" rename to second/week_01/74/ArrayList.txt index dc5f884..13876bf 100644 --- "a/second/week_01/74/\345\255\246\344\271\240\347\254\224\350\256\260.txt" +++ b/second/week_01/74/ArrayList.txt @@ -10,10 +10,20 @@ JAVA源码学习 - java.util.ArrayList int size:集合元素个数 Object[] elementData:实际存储元素的数组 + int modCount:ArrayList重写forEach方法,遍历时查看modcount值是否更改,如果更改抛出ConcurrentModificationException异常 + 2.算法 - 集合顶层接口Iterable 遍历器接口:待补充 + 集合顶层接口Iterable 遍历器接口: + 集合顶层接口Iterable中有iterator 迭代器接口。4个方法: + boolean hasNext() E next() void remove() {throw new UnsupportedOperationException("remove");} + 1.8新增方法:void forEachRemaining(Consumer action) { + Objects.requireNonNull(action); + while (hasNext()) + action.accept(next()); + } + 重要方法: *native void arraycopy(Object src, int srcPos, @@ -43,4 +53,5 @@ JAVA源码学习 - java.util.ArrayList + 总结:源码耐人寻味,特别算法,设计巧妙。本次时间紧迫,学习不深入,uml工具待学习,后续系统化学习时间,强化学习。感谢 \ No newline at end of file diff --git a/second/week_01/74/LinkedList.txt b/second/week_01/74/LinkedList.txt new file mode 100644 index 0000000..3477920 --- /dev/null +++ b/second/week_01/74/LinkedList.txt @@ -0,0 +1,37 @@ +JAVA源码学习 - java.util.LinkedList + +1>数据结构 + 线性表结构,占用内存不连续,每个元素是内部类Node对象,每个node对象记录链表前,后一个元素node对象,和当前元素。相比数组,占用内存更大 + 取:效率低,需遍历(大部分情况) + 增删:效率高,删除元素=null,改变前后元素链表标记。 + + + 内部类Node:private static class Node { + E item; + Node next; + Node prev; + + Node(Node prev, E element, Node next) { + this.item = element; + this.next = next; + this.prev = prev; + } + } + + + +2.算法 + E unlink(Node x):从链表中删除x + void linkLast(E e):在e元素后边添加 + void linkBefore(E e):在e元素前边添加 + + + 重要方法: + + + + 新增元素主要方法: + + + 删除元素主要方法: + -- Gitee