Skip to content

Commit 976f7bd

Browse files
committed
Merge remote-tracking branch 'upstream/master'
2 parents 70a5b24 + 47da352 commit 976f7bd

File tree

2,089 files changed

+106621
-218
lines changed

Some content is hidden

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

2,089 files changed

+106621
-218
lines changed

.gitignore

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,30 @@
11
*.class
2-
32
# Mobile Tools for Java (J2ME)
43
.mtj.tmp/
54

65
# Package Files #
76
*.jar
87
*.war
98
*.ear
9+
target
1010

1111
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
1212
hs_err_pid*
1313

1414
#ide config
1515
.metadata
1616
.recommenders
17+
.idea/
18+
19+
20+
21+
#macOS
22+
.DS_Store
23+
24+
25+
*.iml
26+
rebel.*
27+
.rebel.*
28+
29+
target
30+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package week01.basic;
2+
3+
public interface Iterator {
4+
public boolean hasNext();
5+
6+
public Object next();
7+
8+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package week01.basic;
2+
3+
public interface List {
4+
public void add(Object o);
5+
6+
public void add(int index, Object o);
7+
8+
public Object get(int index);
9+
10+
public Object remove(int index);
11+
12+
public int size();
13+
}
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
package week01.basic;
2+
3+
import java.util.Arrays;
4+
5+
public class MyArrayList implements List {
6+
7+
private int size = 0;
8+
9+
private Object[] elementData = new Object[100];
10+
11+
public void add(Object o) {
12+
ensureCapacity(size + 1);
13+
14+
elementData[size++] = o;
15+
}
16+
17+
public void add(int index, Object o) {
18+
checkPositionIndex(index);
19+
ensureCapacity(size + 1);
20+
21+
if (index >= size) {
22+
elementData[size++] = o;
23+
} else {
24+
System.arraycopy(elementData, index, elementData, index + 1, size
25+
- index);
26+
27+
elementData[index] = o;
28+
29+
size++;
30+
}
31+
}
32+
33+
public Object get(int index) {
34+
checkElementIndex(index);
35+
return elementData[index];
36+
}
37+
38+
public Object remove(int index) {
39+
checkElementIndex(index);
40+
Object removeElement = elementData[index];
41+
if (index == (size - 1)) {
42+
elementData[index] = null;
43+
size--;
44+
} else {
45+
System.arraycopy(elementData, index + 1, elementData, index, size
46+
- index - 1);
47+
elementData[size - 1] = null;
48+
size--;
49+
}
50+
return removeElement;
51+
}
52+
53+
public int size() {
54+
return size;
55+
}
56+
57+
/**
58+
* 保证数组空间充足
59+
*
60+
* @param minCapacity
61+
*/
62+
private void ensureCapacity(int minCapacity) {
63+
int capacity = elementData.length;
64+
if (minCapacity > capacity) {
65+
capacity += capacity / 2;
66+
grow(capacity);
67+
}
68+
}
69+
70+
private void checkElementIndex(int index) {
71+
if (!isElementIndex(index)) {
72+
throw new IndexOutOfBoundsException("Index: " + index + ", Size: "
73+
+ size);
74+
}
75+
}
76+
77+
private boolean isElementIndex(int index) {
78+
return index >= 0 && index < size;
79+
}
80+
81+
private void checkPositionIndex(int index) {
82+
if (!isPositionIndex(index)) {
83+
throw new IndexOutOfBoundsException("Index: " + index + ", Size: "
84+
+ size);
85+
}
86+
}
87+
88+
private boolean isPositionIndex(int index) {
89+
return index >= 0 && index <= size;
90+
}
91+
92+
private void grow(int newCapacity) {
93+
elementData = Arrays.copyOf(elementData, newCapacity);
94+
}
95+
96+
public Iterator iterator() {
97+
return new ArrayListIterator(this);
98+
}
99+
100+
private class ArrayListIterator implements Iterator {
101+
private MyArrayList list;
102+
private int position = 0;
103+
104+
private ArrayListIterator(MyArrayList list) {
105+
this.list = list;
106+
}
107+
108+
@Override
109+
public boolean hasNext() {
110+
if ((position + 1) > size) {
111+
return false;
112+
}
113+
return true;
114+
}
115+
116+
@Override
117+
public Object next() {
118+
return list.get(position++);
119+
}
120+
}
121+
122+
@Override
123+
public String toString() {
124+
String elementStr = "";
125+
for (int i = 0; i < size; i++) {
126+
elementStr += elementData[i] + ",";
127+
}
128+
return "MyArrayList: { size=" + size + ", elementData=" + "["
129+
+ elementStr.substring(0, elementStr.length() - 1) + "]" + " }";
130+
}
131+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package week01.basic;
2+
3+
public class MyBinaryTreeNode {
4+
5+
private Object data;
6+
private MyBinaryTreeNode left;
7+
private MyBinaryTreeNode right;
8+
9+
public Object getData() {
10+
return data;
11+
}
12+
13+
public void setData(Object data) {
14+
this.data = data;
15+
}
16+
17+
public MyBinaryTreeNode getLeft() {
18+
return left;
19+
}
20+
21+
public void setLeft(MyBinaryTreeNode left) {
22+
this.left = left;
23+
}
24+
25+
public MyBinaryTreeNode getRight() {
26+
return right;
27+
}
28+
29+
public void setRight(MyBinaryTreeNode right) {
30+
this.right = right;
31+
}
32+
33+
public MyBinaryTreeNode insert(Object o) {
34+
if(this.getData() == null && this.getLeft() == null && this.getRight() == null){
35+
this.setData(o);
36+
this.setLeft(null);
37+
this.setRight(null);
38+
return this;
39+
}
40+
41+
MyBinaryTreeNode node = new MyBinaryTreeNode();
42+
MyBinaryTreeNode currentNode = this;
43+
while(true){
44+
if((Integer) o < (Integer) getData()){
45+
if(currentNode.getLeft() == null){
46+
node.setData(o);
47+
node.setLeft(null);
48+
node.setRight(null);
49+
50+
currentNode.setLeft(node);
51+
return this;
52+
}else{
53+
currentNode = currentNode.getLeft();
54+
}
55+
56+
}else{
57+
if(currentNode.getRight() == null){
58+
node.setData(o);
59+
node.setLeft(null);
60+
node.setRight(null);
61+
62+
currentNode.setRight(node);
63+
return this;
64+
}else{
65+
currentNode = currentNode.getRight();
66+
}
67+
}
68+
}
69+
}
70+
}

0 commit comments

Comments
 (0)