Skip to content

Commit 19e65e1

Browse files
authored
Merge pull request onlyliuxin#6 from conf1102/master
Practice code & basic data structure implementation onlyliuxin#1
2 parents b300f43 + 25ef1af commit 19e65e1

File tree

5 files changed

+320
-0
lines changed

5 files changed

+320
-0
lines changed
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
package com.basic.datastructure;
2+
3+
public class ArrayList implements List {
4+
5+
private Object[] elementData;
6+
private int size;
7+
8+
private int enableCapacity;
9+
10+
public ArrayList() {
11+
this.enableCapacity = 10;
12+
this.elementData = new Object[enableCapacity];
13+
}
14+
15+
@Override
16+
public void add(Object o) {
17+
growIfNeeded();
18+
elementData[size] = o;
19+
this.size++;
20+
}
21+
22+
@Override
23+
public void add(int index, Object o) {
24+
rangeCheckForAdd(index);
25+
growIfNeeded();
26+
27+
Object[] tmpObjects = new Object[elementData.length];
28+
System.arraycopy(elementData, 0, tmpObjects, 0, index);
29+
tmpObjects[index] = o;
30+
System.arraycopy(elementData, index, tmpObjects, index + 1, elementData.length - index - 1);
31+
32+
elementData = tmpObjects;
33+
34+
this.size++;
35+
}
36+
37+
@Override
38+
public Object get(int index) {
39+
if (index > size) {
40+
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);
41+
}
42+
return elementData[index];
43+
}
44+
45+
@Override
46+
public Object remove(int index) {
47+
Object removedObj = this.get(index);
48+
rangeCheck(index);
49+
Object[] tmpObjects = new Object[elementData.length];
50+
51+
System.arraycopy(elementData, 0, tmpObjects, 0, index);
52+
System.arraycopy(elementData, index + 1, tmpObjects, index, elementData.length - index - 1);
53+
54+
elementData = tmpObjects;
55+
56+
return removedObj;
57+
}
58+
59+
@Override
60+
public int size() {
61+
return size;
62+
}
63+
64+
@Override
65+
public String toString() {
66+
for (int i = 0; i < elementData.length; i++) {
67+
System.out.print(elementData[i] + ",");
68+
}
69+
return "";
70+
}
71+
72+
private void rangeCheck(int paramInt) {
73+
if ((paramInt < 0) || (paramInt >= size)) {
74+
throw new IndexOutOfBoundsException(outOfBoundsMsg(paramInt));
75+
}
76+
}
77+
78+
private void rangeCheckForAdd(int paramInt) {
79+
if ((paramInt < 0) || (paramInt > size)) {
80+
throw new IndexOutOfBoundsException(outOfBoundsMsg(paramInt));
81+
}
82+
}
83+
84+
private String outOfBoundsMsg(int paramInt) {
85+
return "Index: " + paramInt + ", Size: " + size;
86+
}
87+
88+
private Object[] growIfNeeded() {
89+
if (enableCapacity <= this.size) {
90+
enableCapacity = enableCapacity * 2;
91+
Object[] largerElementData = new Object[enableCapacity];
92+
System.arraycopy(elementData, 0, largerElementData, 0, elementData.length);
93+
elementData = largerElementData;
94+
}
95+
return elementData;
96+
}
97+
98+
public static void main(String[] args) {
99+
ArrayList list = new ArrayList();
100+
for (int i = 1; i <= 11; i++) {
101+
list.add(String.valueOf(i));
102+
}
103+
list.add(10,"test");
104+
list.get(10);
105+
list.remove(10);
106+
System.out.println(list);
107+
}
108+
}
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
package com.basic.datastructure;
2+
3+
public class LinkedList implements List {
4+
private Node first;
5+
private Node last;
6+
7+
private int size;
8+
9+
public void add(Object o) {
10+
addLast(o);
11+
}
12+
13+
public void add(int index, Object o) {
14+
checkRange(index);
15+
if (index == 0) {
16+
addFirst(o);
17+
} else if (index == size) {
18+
addLast(o);
19+
} else {
20+
21+
}
22+
}
23+
24+
public Object get(int index) {
25+
checkRange(index);
26+
if(size > 0){
27+
int loopTimes = 0;
28+
Node p = first;
29+
while(index > loopTimes){
30+
p = p.next;
31+
loopTimes ++;
32+
}
33+
return p;
34+
}
35+
36+
return null;
37+
}
38+
39+
public Object remove(int index) {
40+
return null;
41+
}
42+
43+
public int size() {
44+
return size;
45+
}
46+
47+
private void addFirst(Object o) {
48+
if (size == 0) {
49+
first = new Node(o);
50+
last = first;
51+
} else {
52+
Node tmpNode = new Node(o);
53+
tmpNode.next = first;
54+
first = tmpNode;
55+
}
56+
size++;
57+
}
58+
59+
private void addLast(Object o) {
60+
if (size == 0) {
61+
first = new Node(o);
62+
last = first;
63+
} else {
64+
last.next = new Node(o);
65+
last = last.next;
66+
}
67+
size++;
68+
}
69+
70+
public Object removeFirst() {
71+
Node tmpNode = first;
72+
first = first.next;
73+
size--;
74+
return tmpNode;
75+
}
76+
77+
public Object removeLast() {
78+
Node tmpNode = last;
79+
80+
return null;
81+
}
82+
83+
private void checkRange(int index) {
84+
if (index > size || index < 0) {
85+
throw new IndexOutOfBoundsException("Index: " + index + "Size: " + size);
86+
}
87+
}
88+
89+
public String toString() {
90+
StringBuilder sb = new StringBuilder();
91+
Node p = first;
92+
while (p != null) {
93+
sb.append(p.item + "\n");
94+
p = p.next;
95+
}
96+
return sb.toString();
97+
}
98+
99+
private static class Node {
100+
private Object item;
101+
private Node next;
102+
103+
Node(Object item) {
104+
this.item = item;
105+
}
106+
}
107+
108+
public static void main(String[] args) {
109+
LinkedList list = new LinkedList();
110+
for (int i = 0; i < 5; i++) {
111+
list.add(i);
112+
}
113+
list.get(5);
114+
115+
System.out.println(list);
116+
}
117+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.basic.datastructure;
2+
3+
public interface List {
4+
public void add(Object o);
5+
public void add(int index, Object o);
6+
public Object get(int index);
7+
public Object remove(int index);
8+
public int size();
9+
10+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.basic.practice;
2+
3+
/**
4+
*
5+
* @author Wu Alvin
6+
* Java Polymorphic Only represent in method level
7+
*
8+
*/
9+
10+
class Fruit{
11+
String name = "Fruit";
12+
public void print(int i){
13+
System.out.println("Fruit" + i);
14+
}
15+
}
16+
17+
18+
class Apple extends Fruit{
19+
String name = "Apple";
20+
public void print(int i){
21+
System.out.println("Apple" + i);
22+
}
23+
}
24+
25+
26+
public class PolymorphicInJava {
27+
28+
public static void main(String[] args) {
29+
Apple apple = new Apple();
30+
apple.print(100);
31+
//Apple100
32+
System.out.println(apple.name);
33+
//Apple
34+
Fruit fruit = apple;
35+
fruit.print(100);
36+
//Apple100
37+
System.out.println(fruit.name);
38+
//Fruit
39+
}
40+
41+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.basic.practice;
2+
3+
public class ValuePassInJava {
4+
5+
/*
6+
* Pass the Simple value, etc int String...
7+
* Change will NOT happened
8+
*
9+
*/
10+
public static void main(String[] args) {
11+
String s = new String("123");
12+
int i = 1;
13+
changeVal(i);
14+
System.out.println(i);
15+
16+
}
17+
18+
private static void changeVal(int i){
19+
i = 2;
20+
}
21+
22+
/*
23+
* Pass whole OBJECT, but change the Member variable
24+
* Change will happened
25+
*/
26+
27+
/*
28+
public static void main(String[] args) {
29+
Person p = new Person();
30+
p.age = 10;
31+
changeAge(p);
32+
System.out.println(p.age);
33+
}
34+
35+
private static void changeAge(Person p){
36+
p.age = 20;
37+
}
38+
*/
39+
40+
}
41+
42+
class Person{
43+
int age;
44+
}

0 commit comments

Comments
 (0)