From 3a61b46a4473064aabf03b1bc33d04daca072d07 Mon Sep 17 00:00:00 2001 From: luoziyihao Date: Sat, 25 Feb 2017 13:38:12 +0800 Subject: [PATCH 1/9] add gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index ec55baf87d..bc6c3aabe9 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,6 @@ hs_err_pid* #ide config .metadata .recommenders +.idea/ +rebel.xml +*.rebel \ No newline at end of file From fe31ff7ecf613cf4ea8252ad77fb1c00d70912ed Mon Sep 17 00:00:00 2001 From: luoziyihao Date: Sat, 25 Feb 2017 14:31:45 +0800 Subject: [PATCH 2/9] init homework --- .gitignore | 8 +- .../1204187480/code/homework/basic/pom.xml | 12 +++ .../1204187480/code/homework/parent/pom.xml | 95 +++++++++++++++++++ group17/1204187480/code/homework/pom.xml | 14 +++ 4 files changed, 126 insertions(+), 3 deletions(-) create mode 100644 group17/1204187480/code/homework/basic/pom.xml create mode 100644 group17/1204187480/code/homework/parent/pom.xml create mode 100644 group17/1204187480/code/homework/pom.xml diff --git a/.gitignore b/.gitignore index bc6c3aabe9..2a5296f902 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ *.class - # Mobile Tools for Java (J2ME) .mtj.tmp/ @@ -15,5 +14,8 @@ hs_err_pid* .metadata .recommenders .idea/ -rebel.xml -*.rebel \ No newline at end of file +*.iml +rebel.* +.rebel.* + +target diff --git a/group17/1204187480/code/homework/basic/pom.xml b/group17/1204187480/code/homework/basic/pom.xml new file mode 100644 index 0000000000..039af72d42 --- /dev/null +++ b/group17/1204187480/code/homework/basic/pom.xml @@ -0,0 +1,12 @@ + + 4.0.0 + basic + + com.coding + parent + 1.0-SNAPSHOT + ../parent/pom.xml + + + \ No newline at end of file diff --git a/group17/1204187480/code/homework/parent/pom.xml b/group17/1204187480/code/homework/parent/pom.xml new file mode 100644 index 0000000000..9d29a4d93e --- /dev/null +++ b/group17/1204187480/code/homework/parent/pom.xml @@ -0,0 +1,95 @@ + + 4.0.0 + + com.coding + parent + pom + 1.0-SNAPSHOT + https://github.com/luoziyihao/coding2017 + + + UTF-8 + UTF-8 + UTF-8 + 1.8 + 1.8 + 1.8 + 3.0 + 1.1.7 + 1.2 + 1.2.17 + 4.12 + + + + + + ch.qos.logback + logback-classic + ${logback-classic.version} + + + + commons-logging + commons-logging + ${commons-logging.version} + + + log4j + log4j + ${log4j.version} + + + + + junit + junit + ${junit.version} + + + + + + alimaven + aliyun maven + http://maven.aliyun.com/nexus/content/groups/public/ + + true + + + true + + + + + + alimaven + aliyun maven + http://maven.aliyun.com/nexus/content/groups/public/ + + true + + + true + + + + + + ${project.artifactId} + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + + \ No newline at end of file diff --git a/group17/1204187480/code/homework/pom.xml b/group17/1204187480/code/homework/pom.xml new file mode 100644 index 0000000000..e939b51bd0 --- /dev/null +++ b/group17/1204187480/code/homework/pom.xml @@ -0,0 +1,14 @@ + + + 4.0.0 + com.coding + coding2017 + 1.0-SNAPSHOT + pom + + parent + basic + + + From 8d10f0f7de619add44bedd98615a61a12979581a Mon Sep 17 00:00:00 2001 From: luoziyihao Date: Sat, 25 Feb 2017 14:39:41 +0800 Subject: [PATCH 3/9] basic init --- .../main/java/com/coding/basic/ArrayList.java | 32 +++++++++++++ .../java/com/coding/basic/BinaryTreeNode.java | 32 +++++++++++++ .../main/java/com/coding/basic/Iterator.java | 7 +++ .../java/com/coding/basic/LinkedList.java | 46 +++++++++++++++++++ .../src/main/java/com/coding/basic/List.java | 9 ++++ .../src/main/java/com/coding/basic/Queue.java | 19 ++++++++ .../src/main/java/com/coding/basic/Stack.java | 22 +++++++++ 7 files changed, 167 insertions(+) create mode 100644 group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java create mode 100644 group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/BinaryTreeNode.java create mode 100644 group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/Iterator.java create mode 100644 group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/LinkedList.java create mode 100644 group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/List.java create mode 100644 group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/Queue.java create mode 100644 group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/Stack.java diff --git a/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java new file mode 100644 index 0000000000..1f185736f9 --- /dev/null +++ b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java @@ -0,0 +1,32 @@ +package com.coding.basic; + +public class ArrayList implements List { + + private int size = 0; + + private Object[] elementData = new Object[100]; + + public void add(Object o){ + + } + public void add(int index, Object o){ + + } + + public Object get(int index){ + return null; + } + + public Object remove(int index){ + return null; + } + + public int size(){ + return -1; + } + + public Iterator iterator(){ + return null; + } + +} diff --git a/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/BinaryTreeNode.java b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/BinaryTreeNode.java new file mode 100644 index 0000000000..d7ac820192 --- /dev/null +++ b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/BinaryTreeNode.java @@ -0,0 +1,32 @@ +package com.coding.basic; + +public class BinaryTreeNode { + + private Object data; + private BinaryTreeNode left; + private BinaryTreeNode right; + + public Object getData() { + return data; + } + public void setData(Object data) { + this.data = data; + } + public BinaryTreeNode getLeft() { + return left; + } + public void setLeft(BinaryTreeNode left) { + this.left = left; + } + public BinaryTreeNode getRight() { + return right; + } + public void setRight(BinaryTreeNode right) { + this.right = right; + } + + public BinaryTreeNode insert(Object o){ + return null; + } + +} diff --git a/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/Iterator.java b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/Iterator.java new file mode 100644 index 0000000000..06ef6311b2 --- /dev/null +++ b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/Iterator.java @@ -0,0 +1,7 @@ +package com.coding.basic; + +public interface Iterator { + public boolean hasNext(); + public Object next(); + +} diff --git a/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/LinkedList.java b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/LinkedList.java new file mode 100644 index 0000000000..e2c4e5e795 --- /dev/null +++ b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/LinkedList.java @@ -0,0 +1,46 @@ +package com.coding.basic; + +public class LinkedList implements List { + + private Node head; + + public void add(Object o){ + + } + public void add(int index , Object o){ + + } + public Object get(int index){ + return null; + } + public Object remove(int index){ + return null; + } + + public int size(){ + return -1; + } + + public void addFirst(Object o){ + + } + public void addLast(Object o){ + + } + public Object removeFirst(){ + return null; + } + public Object removeLast(){ + return null; + } + public Iterator iterator(){ + return null; + } + + + private static class Node{ + Object data; + Node next; + + } +} diff --git a/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/List.java b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/List.java new file mode 100644 index 0000000000..10d13b5832 --- /dev/null +++ b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/List.java @@ -0,0 +1,9 @@ +package com.coding.basic; + +public interface List { + public void add(Object o); + public void add(int index, Object o); + public Object get(int index); + public Object remove(int index); + public int size(); +} diff --git a/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/Queue.java b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/Queue.java new file mode 100644 index 0000000000..36e516e266 --- /dev/null +++ b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/Queue.java @@ -0,0 +1,19 @@ +package com.coding.basic; + +public class Queue { + + public void enQueue(Object o){ + } + + public Object deQueue(){ + return null; + } + + public boolean isEmpty(){ + return false; + } + + public int size(){ + return -1; + } +} diff --git a/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/Stack.java b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/Stack.java new file mode 100644 index 0000000000..a5a04de76d --- /dev/null +++ b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/Stack.java @@ -0,0 +1,22 @@ +package com.coding.basic; + +public class Stack { + private ArrayList elementData = new ArrayList(); + + public void push(Object o){ + } + + public Object pop(){ + return null; + } + + public Object peek(){ + return null; + } + public boolean isEmpty(){ + return false; + } + public int size(){ + return -1; + } +} From b87fad9a98abab6e742715b65ca9accfaf6af534 Mon Sep 17 00:00:00 2001 From: luoziyihao Date: Sat, 25 Feb 2017 15:54:54 +0800 Subject: [PATCH 4/9] arrayList 0.1 --- .../main/java/com/coding/basic/ArrayList.java | 109 +++++++++++++----- .../test/java/com/coding/api/ArraysTest.java | 22 ++++ .../test/java/com/coding/api/SystemTest.java | 24 ++++ .../java/com/coding/basic/ArrayListTest.java | 35 ++++++ 4 files changed, 162 insertions(+), 28 deletions(-) create mode 100644 group17/1204187480/code/homework/basic/src/test/java/com/coding/api/ArraysTest.java create mode 100644 group17/1204187480/code/homework/basic/src/test/java/com/coding/api/SystemTest.java create mode 100644 group17/1204187480/code/homework/basic/src/test/java/com/coding/basic/ArrayListTest.java diff --git a/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java index 1f185736f9..35e9a2a05e 100644 --- a/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java +++ b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java @@ -1,32 +1,85 @@ package com.coding.basic; +import java.util.Arrays; + public class ArrayList implements List { - - private int size = 0; - - private Object[] elementData = new Object[100]; - - public void add(Object o){ - - } - public void add(int index, Object o){ - - } - - public Object get(int index){ - return null; - } - - public Object remove(int index){ - return null; - } - - public int size(){ - return -1; - } - - public Iterator iterator(){ - return null; - } - + + private int size = 0; + + private Object[] elementData = new Object[100]; + + private int length() { + return elementData.length; + } + + private static final int ENLARGE_LENGTH = 100; + + private Object[] enlarge(Object[] origin) { + return Arrays.copyOf(origin, origin.length + ENLARGE_LENGTH); + } + + private void enLargeElementData() { + if (size == length()) { + elementData = enlarge(elementData); + } + } + + public void add(Object o) { + enLargeElementData(); + elementData[size] = o; + size++; + } + + public void add(int index, Object o) { + checkIndex(index); + enLargeElementData(); + // 备份 index 处及后面的数据 + Object[] elementsBehindIndex = backBehindElements(elementData, index); + // 给index处 设值 + elementData[index] = o; + // 追加 备份的数据 + appendElement(elementData, index, elementsBehindIndex); + size++; + } + + private void appendElement(Object[] origin, int pos, Object[] append) { + System.arraycopy(append, 0, origin, pos, append.length); + } + + private Object[] backBehindElements(Object[] elementData, int index) { + int backSize = size - index; + Object[] back = new Object[backSize]; + System.arraycopy(elementData, index, back, 0, backSize); + return back; + } + + public Object get(int index) { + checkIndex(index); + return elementData[index]; + } + + private void checkIndex(int index) { + if (index < 0 || index >= size) { + throw new ArrayIndexOutOfBoundsException(String.format("index=%s, size=%s", index, size)); + } + } + + public Object remove(int index) { + checkIndex(index); + Object[] back = backBehindElements(elementData, index + 1); + System.arraycopy(back, 0, elementData, index, back.length); + Object ret = elementData[index]; + elementData[index] = null; + size--; + return ret; + } + + public int size() { + return size; + } + + public Iterator iterator() { + return null; + } + } diff --git a/group17/1204187480/code/homework/basic/src/test/java/com/coding/api/ArraysTest.java b/group17/1204187480/code/homework/basic/src/test/java/com/coding/api/ArraysTest.java new file mode 100644 index 0000000000..eb41a7e262 --- /dev/null +++ b/group17/1204187480/code/homework/basic/src/test/java/com/coding/api/ArraysTest.java @@ -0,0 +1,22 @@ +package com.coding.api; + +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Arrays; + +/** + * Created by luoziyihao on 2/25/17. + */ +public class ArraysTest { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + + @Test + public void testCopyOf(){ + Object[] a = new Object[]{1, 2, 3, 4}; + Object[] b = Arrays.copyOf(a, 10); + logger.info("a={}, b={}", Arrays.toString(a), Arrays.toString(b)); + } +} diff --git a/group17/1204187480/code/homework/basic/src/test/java/com/coding/api/SystemTest.java b/group17/1204187480/code/homework/basic/src/test/java/com/coding/api/SystemTest.java new file mode 100644 index 0000000000..efc4022378 --- /dev/null +++ b/group17/1204187480/code/homework/basic/src/test/java/com/coding/api/SystemTest.java @@ -0,0 +1,24 @@ +package com.coding.api; + +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Arrays; + +/** + * Created by luoziyihao on 2/25/17. + */ +public class SystemTest { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Test + public void testArrayCopy() { + int[] a = new int[]{1, 2, 3, 4, 5, 6, 7}; + int[] b = new int[]{11, 22, 33, 44, 55, 66, 77}; + System.arraycopy(a, 2, b, 4, 3); + logger.info("b={}", Arrays.toString(b)); + + } +} diff --git a/group17/1204187480/code/homework/basic/src/test/java/com/coding/basic/ArrayListTest.java b/group17/1204187480/code/homework/basic/src/test/java/com/coding/basic/ArrayListTest.java new file mode 100644 index 0000000000..9241fe72da --- /dev/null +++ b/group17/1204187480/code/homework/basic/src/test/java/com/coding/basic/ArrayListTest.java @@ -0,0 +1,35 @@ +package com.coding.basic; + +import org.junit.Before; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +/** + * Created by luoziyihao on 2/25/17. + */ +public class ArrayListTest { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + + private List list = new ArrayList(); + + @Before + public void before() { + + } + + @Test + public void add() throws Exception { + list.add(1); + } + + @Test + public void get() throws Exception { + add(); + logger.info("{}", list.get(0)); + } + +} \ No newline at end of file From fd15626f7a0aec6caa33e7f66be32ae260351244 Mon Sep 17 00:00:00 2001 From: luoziyihao Date: Sat, 25 Feb 2017 22:34:01 +0800 Subject: [PATCH 5/9] com --- group17/article/20170226.md | 46 +++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 group17/article/20170226.md diff --git a/group17/article/20170226.md b/group17/article/20170226.md new file mode 100644 index 0000000000..6d1c77f5fb --- /dev/null +++ b/group17/article/20170226.md @@ -0,0 +1,46 @@ +# 写一篇文章介绍cpu, 内存, 磁盘, 指令以及他们之间的关系 + +1204187480 + +102228177 + +876385982 + +785396327 + +1059107701 + +240094626 + +82427129 + +296910598 + +1264835468 + +516886559 + +1282579502 + +614982500 + +865797761 + +1540186032 + +176653813 + +116665530 + +51075907 http://m.blog.csdn.net/article/details?id=57083764 + +1158154002 + +345450234 + +919764878 + +1368331120 + +517970312 + From cdb9310ce504b7ee2525e97e77f69c96eb85cf52 Mon Sep 17 00:00:00 2001 From: luoziyihao Date: Sat, 25 Feb 2017 22:35:44 +0800 Subject: [PATCH 6/9] add article --- ...3\351\227\264\347\232\204\345\205\263\347\263\273_20170226.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename group17/article/20170226.md => "group17/article/\345\206\231\344\270\200\347\257\207\346\226\207\347\253\240\344\273\213\347\273\215cpu, \345\206\205\345\255\230, \347\243\201\347\233\230, \346\214\207\344\273\244\344\273\245\345\217\212\344\273\226\344\273\254\344\271\213\351\227\264\347\232\204\345\205\263\347\263\273_20170226.md" (100%) diff --git a/group17/article/20170226.md "b/group17/article/\345\206\231\344\270\200\347\257\207\346\226\207\347\253\240\344\273\213\347\273\215cpu, \345\206\205\345\255\230, \347\243\201\347\233\230, \346\214\207\344\273\244\344\273\245\345\217\212\344\273\226\344\273\254\344\271\213\351\227\264\347\232\204\345\205\263\347\263\273_20170226.md" similarity index 100% rename from group17/article/20170226.md rename to "group17/article/\345\206\231\344\270\200\347\257\207\346\226\207\347\253\240\344\273\213\347\273\215cpu, \345\206\205\345\255\230, \347\243\201\347\233\230, \346\214\207\344\273\244\344\273\245\345\217\212\344\273\226\344\273\254\344\271\213\351\227\264\347\232\204\345\205\263\347\263\273_20170226.md" From 32c4abc51b194600f50a6c1065a9f47e055aa2b2 Mon Sep 17 00:00:00 2001 From: luoziyihao Date: Sat, 25 Feb 2017 22:39:36 +0800 Subject: [PATCH 7/9] optimize article.md --- ...64\347\232\204\345\205\263\347\263\273_20170226.md" | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git "a/group17/article/\345\206\231\344\270\200\347\257\207\346\226\207\347\253\240\344\273\213\347\273\215cpu, \345\206\205\345\255\230, \347\243\201\347\233\230, \346\214\207\344\273\244\344\273\245\345\217\212\344\273\226\344\273\254\344\271\213\351\227\264\347\232\204\345\205\263\347\263\273_20170226.md" "b/group17/article/\345\206\231\344\270\200\347\257\207\346\226\207\347\253\240\344\273\213\347\273\215cpu, \345\206\205\345\255\230, \347\243\201\347\233\230, \346\214\207\344\273\244\344\273\245\345\217\212\344\273\226\344\273\254\344\271\213\351\227\264\347\232\204\345\205\263\347\263\273_20170226.md" index 6d1c77f5fb..eee6b340dd 100644 --- "a/group17/article/\345\206\231\344\270\200\347\257\207\346\226\207\347\253\240\344\273\213\347\273\215cpu, \345\206\205\345\255\230, \347\243\201\347\233\230, \346\214\207\344\273\244\344\273\245\345\217\212\344\273\226\344\273\254\344\271\213\351\227\264\347\232\204\345\205\263\347\263\273_20170226.md" +++ "b/group17/article/\345\206\231\344\270\200\347\257\207\346\226\207\347\253\240\344\273\213\347\273\215cpu, \345\206\205\345\255\230, \347\243\201\347\233\230, \346\214\207\344\273\244\344\273\245\345\217\212\344\273\226\344\273\254\344\271\213\351\227\264\347\232\204\345\205\263\347\263\273_20170226.md" @@ -1,5 +1,15 @@ # 写一篇文章介绍cpu, 内存, 磁盘, 指令以及他们之间的关系 +## 须知 +--- + +交作业时请在QQ 号后面填上各自的文章链接, 比如: + +51075907 http://m.blog.csdn.net/article/details?id=57083764 + +## 文章 +--- + 1204187480 102228177 From 2197ce3bf9178bca479d557927e4e09c133e5bdf Mon Sep 17 00:00:00 2001 From: luoziyihao Date: Sat, 25 Feb 2017 22:54:49 +0800 Subject: [PATCH 8/9] ArrayList 0.2 --- .../main/java/com/coding/basic/ArrayList.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java index 35e9a2a05e..f5e19f6004 100644 --- a/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java +++ b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java @@ -8,6 +8,8 @@ public class ArrayList implements List { private Object[] elementData = new Object[100]; + private Iterator iterator = new ArrayListIterator(); + private int length() { return elementData.length; } @@ -79,7 +81,22 @@ public int size() { } public Iterator iterator() { - return null; + return iterator; + } + + private class ArrayListIterator implements Iterator { + + int next = 0; + + @Override + public boolean hasNext() { + return next < size; + } + + @Override + public Object next() { + return elementData[next++]; + } } } From 683079aa833e380a229930fc00184d1cf74873a4 Mon Sep 17 00:00:00 2001 From: luoziyihao Date: Sun, 26 Feb 2017 00:32:28 +0800 Subject: [PATCH 9/9] LinkedList 0.1 --- .../main/java/com/coding/basic/ArrayList.java | 8 +- .../java/com/coding/basic/LinkedList.java | 163 +++++++++++++----- .../java/com/coding/api/ArrayListTest.java | 25 +++ 3 files changed, 153 insertions(+), 43 deletions(-) create mode 100644 group17/1204187480/code/homework/basic/src/test/java/com/coding/api/ArrayListTest.java diff --git a/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java index f5e19f6004..6ddf8cef58 100644 --- a/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java +++ b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/ArrayList.java @@ -33,7 +33,7 @@ public void add(Object o) { } public void add(int index, Object o) { - checkIndex(index); + checkForAdd(index); enLargeElementData(); // 备份 index 处及后面的数据 Object[] elementsBehindIndex = backBehindElements(elementData, index); @@ -66,6 +66,12 @@ private void checkIndex(int index) { } } + private void checkForAdd(int index) { + if (index < 0 || index > size) { + throw new ArrayIndexOutOfBoundsException(String.format("index=%s, size=%s", index, size)); + } + } + public Object remove(int index) { checkIndex(index); Object[] back = backBehindElements(elementData, index + 1); diff --git a/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/LinkedList.java b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/LinkedList.java index e2c4e5e795..706dafe820 100644 --- a/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/LinkedList.java +++ b/group17/1204187480/code/homework/basic/src/main/java/com/coding/basic/LinkedList.java @@ -1,46 +1,125 @@ package com.coding.basic; public class LinkedList implements List { - - private Node head; - - public void add(Object o){ - - } - public void add(int index , Object o){ - - } - public Object get(int index){ - return null; - } - public Object remove(int index){ - return null; - } - - public int size(){ - return -1; - } - - public void addFirst(Object o){ - - } - public void addLast(Object o){ - - } - public Object removeFirst(){ - return null; - } - public Object removeLast(){ - return null; - } - public Iterator iterator(){ - return null; - } - - - private static class Node{ - Object data; - Node next; - - } + + private Node head; + private int size = 0; + + public void add(Object o) { + Node newNode = new Node(o, null); + if (head == null) { + head = newNode; + } else { + node(size - 1).next = newNode; + } + size++; + } + + public void add(int index, Object o) { + checkForAdd(index); + if (index == size) { + add(o); + }else { + Node newNode = new Node(o, null); + if (index == 0){ + addFirst(o); + } else { + Node preNode = node(index - 1); + Node now = preNode.next; + preNode.next = newNode; + newNode.next = now; + size++; + } + } + + } + + private Node node(int index) { + Node x = head; + for (int i = 0; i < index; i++) { + x = x.next; + } + return x; + } + + public Object get(int index) { + checkIndex(index); + return node(index).data; + } + + /** + * 让被删除的引用的持有者指向下一个节点 + * @param index + * @return + */ + public Object remove(int index) { + final Object ret; + checkIndex(index); + if (index == 0) { + Node removeNode = head; + ret = head.data; + head = removeNode.next; + } else { + Node pre = node(index - 1); + Node removeNode = pre.next; + ret = removeNode.data; + pre.next = removeNode.next; + } + size--; + return ret; + } + + public int size() { + return size; + } + + public void addFirst(Object o) { + head = new Node(o, head);; + size++; + } + + public void addLast(Object o) { + add(o); + } + + public Object removeFirst() { + if (size == 0){ + return null; + }else { + return remove(0); + } + } + + public Object removeLast() { + return remove(size - 1); + } + + public Iterator iterator() { + return null; + } + + private void checkIndex(int index) { + if (index < 0 || index >= size) { + throw new ArrayIndexOutOfBoundsException(String.format("index=%s, size=%s", index, size)); + } + } + + private void checkForAdd(int index) { + if (index < 0 || index > size) { + throw new ArrayIndexOutOfBoundsException(String.format("index=%s, size=%s", index, size)); + } + } + + private static class Node { + Object data; + Node next; + + public Node() { + } + + public Node(Object data, Node next) { + this.data = data; + this.next = next; + } + } } diff --git a/group17/1204187480/code/homework/basic/src/test/java/com/coding/api/ArrayListTest.java b/group17/1204187480/code/homework/basic/src/test/java/com/coding/api/ArrayListTest.java new file mode 100644 index 0000000000..85d3cf6901 --- /dev/null +++ b/group17/1204187480/code/homework/basic/src/test/java/com/coding/api/ArrayListTest.java @@ -0,0 +1,25 @@ +package com.coding.api; + +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * Created by luoziyihao on 2/25/17. + */ +public class ArrayListTest { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Test + public void testAdd(){ + List list = new ArrayList(Arrays.asList(0, 1, 2, 3)); + logger.info("list={}", list); + list.add(5, 2); + logger.info("list={}", list); + } +}