Skip to content

Commit b3edbe4

Browse files
authored
Merge pull request onlyliuxin#1 from honokaBiu/master
合并更新代码
2 parents f73d49c + a85c46f commit b3edbe4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+3865
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
##Honoka's blog link is down below.
2+
3+
https://honokabiu.github.io/
4+
5+
Super simple...
Binary file not shown.
Binary file not shown.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.korben;
2+
3+
public class Main {
4+
5+
public static void main(String[] args) {
6+
System.out.println("Hello Korben : )");
7+
}
8+
}
Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
package org.korben.list;
2+
3+
import java.util.Objects;
4+
5+
/**
6+
* Korben's ArrayList
7+
*
8+
* Created by Korben on 18/02/2017.
9+
*/
10+
public class KArrayList<T> implements KList<T> {
11+
12+
private int size;
13+
private Object[] dataArray = new Object[0];
14+
15+
@Override
16+
public int size() {
17+
return this.size;
18+
}
19+
20+
@Override
21+
public boolean isEmpty() {
22+
return this.size == 0;
23+
}
24+
25+
@Override
26+
public boolean contains(Object o) {
27+
for (Object obj : dataArray) {
28+
if (Objects.equals(obj, o)) {
29+
return true;
30+
}
31+
}
32+
return false;
33+
}
34+
35+
@Override
36+
@SuppressWarnings("unchecked")
37+
public Object[] toArray() {
38+
Object[] array = new Object[size];
39+
System.arraycopy(dataArray, 0, array, 0, size);
40+
return array;
41+
}
42+
43+
@Override
44+
public boolean add(T o) {
45+
ensureCapacity(size + 1);
46+
dataArray[size] = o;
47+
size++;
48+
return true;
49+
}
50+
51+
@Override
52+
public boolean remove(T o) {
53+
int index = indexOf(o);
54+
if (index < 0) {
55+
return false;
56+
}
57+
58+
System.arraycopy(dataArray, index + 1, dataArray, index, size - 1 - index);
59+
dataArray[size - 1] = null;
60+
61+
size--;
62+
63+
return true;
64+
}
65+
66+
@Override
67+
public void clear() {
68+
for (int i = 0; i < size; i++) {
69+
dataArray[i] = null;
70+
}
71+
size = 0;
72+
}
73+
74+
@Override
75+
@SuppressWarnings("unchecked")
76+
public T get(int index) {
77+
if (index < -1 || index >= size) {
78+
throw new IndexOutOfBoundsException();
79+
}
80+
81+
return (T) dataArray[index];
82+
}
83+
84+
@Override
85+
public T set(int index, T element) {
86+
if (index < -1 || index >= size) {
87+
throw new IndexOutOfBoundsException();
88+
}
89+
90+
dataArray[index] = element;
91+
92+
return element;
93+
}
94+
95+
@Override
96+
public void add(int index, T element) {
97+
if (index < -1 || index > size) {
98+
throw new IndexOutOfBoundsException();
99+
}
100+
101+
ensureCapacity(size + 1);
102+
103+
System.arraycopy(dataArray, index, dataArray, index + 1, size - index);
104+
105+
dataArray[index] = element;
106+
size++;
107+
}
108+
109+
@Override
110+
@SuppressWarnings("unchecked")
111+
public T remove(int index) {
112+
if (index < -1 || index >= size) {
113+
throw new IndexOutOfBoundsException();
114+
}
115+
116+
T removeData = (T) dataArray[index];
117+
System.arraycopy(dataArray, index + 1, dataArray, index, size - 1 - index);
118+
dataArray[size - 1] = null;
119+
size--;
120+
return removeData;
121+
}
122+
123+
@Override
124+
public int indexOf(T o) {
125+
for (int i = 0; i < size; i++) {
126+
if (Objects.equals(o, dataArray[i])) {
127+
return i;
128+
}
129+
}
130+
return -1;
131+
}
132+
133+
@Override
134+
public KIterator<T> iterator() {
135+
return new ArrayListIterator(this);
136+
}
137+
138+
private void ensureCapacity(int minCapacity) {
139+
if (minCapacity > dataArray.length) {
140+
int newCapacity = Math.max(minCapacity, dataArray.length * 2);
141+
Object[] newDataArray = new Object[newCapacity];
142+
System.arraycopy(dataArray, 0, newDataArray, 0, dataArray.length);
143+
144+
dataArray = newDataArray;
145+
}
146+
}
147+
148+
private class ArrayListIterator implements KIterator<T> {
149+
private int position;
150+
private KArrayList<T> list;
151+
152+
ArrayListIterator(KArrayList<T> list) {
153+
this.list = list;
154+
}
155+
156+
@Override
157+
public boolean hasNext() {
158+
return position < list.size();
159+
}
160+
161+
@Override
162+
public T next() {
163+
if (hasNext()) {
164+
return list.get(position++);
165+
}
166+
return null;
167+
}
168+
}
169+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.korben.list;
2+
3+
/**
4+
* Created by Korben on 24/02/2017.
5+
*/
6+
public interface KIterator<T> {
7+
boolean hasNext();
8+
9+
T next();
10+
}
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
package org.korben.list;
2+
3+
import java.util.Objects;
4+
5+
/**
6+
* Korben's LinkedList
7+
*
8+
* Created by Korben on 18/02/2017.
9+
*/
10+
public class KLinkedList<T> implements KList<T> {
11+
12+
private int size;
13+
14+
private Node<T> head;
15+
16+
private Node<T> last;
17+
18+
public KLinkedList() {
19+
this.head = new Node<>(null);
20+
}
21+
22+
@Override
23+
public int size() {
24+
return this.size;
25+
}
26+
27+
@Override
28+
public boolean isEmpty() {
29+
return this.size == 0;
30+
}
31+
32+
@Override
33+
public boolean contains(Object o) {
34+
Node node = this.head;
35+
while (node.next != null) {
36+
node = node.next;
37+
if (Objects.equals(node.data, o)) {
38+
return true;
39+
}
40+
}
41+
return false;
42+
}
43+
44+
@Override
45+
public Object[] toArray() {
46+
return new Object[0];
47+
}
48+
49+
@Override
50+
public boolean add(T o) {
51+
if (this.last == null) {
52+
this.last = new Node<>(o);
53+
this.last.pre = this.head;
54+
this.head.next = this.last;
55+
} else {
56+
Node<T> oldLast = this.last;
57+
this.last = new Node<>(o);
58+
this.last.pre = oldLast;
59+
oldLast.next = this.last;
60+
}
61+
this.size++;
62+
return true;
63+
}
64+
65+
@Override
66+
public boolean remove(T o) {
67+
Node node = this.head;
68+
while (node.next != null) {
69+
node = node.next;
70+
if (Objects.equals(node.data, o)) {
71+
node.pre.next = node.next;
72+
if (node.next != null) {
73+
node.next.pre = node.pre;
74+
}
75+
this.size--;
76+
return true;
77+
}
78+
}
79+
return false;
80+
}
81+
82+
@Override
83+
public void clear() {
84+
this.head.next = null;
85+
this.last = null;
86+
87+
this.size = 0;
88+
}
89+
90+
@Override
91+
public T get(int index) {
92+
return getNode(index).data;
93+
}
94+
95+
@Override
96+
public T set(int index, T element) {
97+
Node<T> node = getNode(index);
98+
node.data = element;
99+
return element;
100+
}
101+
102+
@Override
103+
public void add(int index, T element) {
104+
Node<T> node = this.head;
105+
for (int i = 0; i <= index; i++) {
106+
node = node.next;
107+
}
108+
Node<T> pre = node.pre;
109+
Node<T> newNode = new Node<>(element);
110+
pre.next = newNode;
111+
newNode.pre = pre;
112+
newNode.next = node;
113+
node.pre = newNode;
114+
115+
this.size++;
116+
}
117+
118+
@Override
119+
public T remove(int index) {
120+
Node<T> node = getNode(index);
121+
Node<T> pre = node.pre;
122+
Node<T> next = node.next;
123+
pre.next = next;
124+
if (next != null) {
125+
next.pre = pre;
126+
}
127+
128+
this.size--;
129+
return node.data;
130+
}
131+
132+
@Override
133+
public int indexOf(T o) {
134+
Node node = this.head;
135+
int index = 0;
136+
while (node.next != null) {
137+
node = node.next;
138+
if (Objects.equals(node.data, o)) {
139+
return index;
140+
}
141+
index++;
142+
}
143+
return -1;
144+
}
145+
146+
@Override
147+
public KIterator<T> iterator() {
148+
throw new IllegalStateException("方法未实现");
149+
}
150+
151+
private Node<T> getNode(int index) {
152+
if (index < 0 || index >= size) {
153+
throw new IndexOutOfBoundsException();
154+
}
155+
156+
Node<T> node = this.head;
157+
for (int i = 0; i <= index; i++) {
158+
node = node.next;
159+
}
160+
return node;
161+
}
162+
163+
private static class Node<T> {
164+
T data;
165+
Node<T> pre;
166+
Node<T> next;
167+
168+
Node(T data) {
169+
this.data = data;
170+
}
171+
}
172+
}

0 commit comments

Comments
 (0)