package com.chen.arithmetic_test.list_test;
/**
* Created by ChenMP on 2017/7/3.
*/
public interface List {
//获得长度
public int size();
//插入元素
public boolean insert(int index, Object o) throws Exception;
//新增元素
public boolean add(Object o) throws Exception;
//删除元素
public boolean remove(int index) throws Exception;
//获取元素
public Object get(int index) throws Exception;
//判断线性表是否为空
public boolean isEmpty();
package com.chen.arithmetic_test.list_test;
/**
* Created by ChenMP on 2017/7/3.
*/
public class SequenceList implements List {
private Object[] listArray;//对象数组
private int size;//对象数组长度
private boolean isFixed;//是否限定对象数组长度
public SequenceList() {
this.size = 0;
this.listArray = new Object[3];//默认对象数组固定长度为3
this.isFixed = false;//不限定对象数组长度
}
public SequenceList(int length) {
this.listArray = new Object[length];
this.size = 0;
this.isFixed = true;//限定对象数组长度
}
@Override
public int size() {
return size;
}
@Override
public boolean insert(int index, Object o) throws Exception {
if(index > size || index < 0)
throw new Exception("IndexOutOfBoundsException");
if(index==size && size==this.listArray.length && this.isFixed)
throw new Exception("IndexOutOfBoundsException");
if(index==size && size==this.listArray.length && !this.isFixed) {
Object[] newListArray = new Object[this.listArray.length + 10];
System.arraycopy(listArray, 0, newListArray, 0, listArray.length);
newListArray[index] = o;
this.listArray = newListArray;
this.size++;
return true;
}
if (index == size && size
listArray[index] = o;
this.size++;
return true;
}
if(index < size && index >= 0) {
listArray[index] = o;
return true;
}
return false;
}
@Override
public boolean add(Object o) throws Exception {
if(this.size==this.listArray.length && this.isFixed)
throw new Exception("IndexOutOfBoundsException");
if(this.size==this.listArray.length && !this.isFixed) {
Object[] newListArray = new Object[this.listArray.length + 10];
System.arraycopy(listArray, 0, newListArray, 0, listArray.length);
newListArray[size] = o;
this.listArray = newListArray;
this.size++;
return true;
}
if(this.size
listArray[this.size] = o;
this.size++;
return true;
}
return false;
}
@Override
public boolean remove(int index) throws Exception {
if(index < 0 || index >= size)
throw new Exception("IndexOutOfBoundsException");
System.arraycopy(listArray, 0, listArray, index, listArray.length-index);
this.size--;
return true;
}
@Override
public Object get(int index) throws Exception {
if(index < 0 || index >= size)
throw new Exception("IndexOutOfBoundsException");
return this.listArray[index];
}
@Override
public boolean isEmpty() {
return this.size>0?false:true;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (Object o : this.listArray) {
if(null != o)
sb.append(o).append(" ,");
}
return sb.toString();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
测试类
package com.chen.arithmetic_test.list_test;
/**
* Created by ChenMP on 2017/7/3.
*/
public class TestList {
public static void main(String[] args) throws Exception {
List list = new SequenceList(3);
list.insert(0,0);
list.add(1);
list.add(2);
// list.add(3);
System.out.print("测试定长list: " + list.toString() + "|| list长度为: " + list.size());
System.out.println();
List list2 = new SequenceList();
list2.add(0);
list2.add(1);
list2.add(2);
list2.add(3);
System.out.print("测试不定长list: " + list2.toString() + "|| list长度为: " + list2.size());
}
}