class ArrList {
private String[] data;
private int size;
public ArrList() {
data = new String[10];
}
public ArrList(int initialCapacity) {
if (initialCapacity < 0)
throw new IllegalArgumentException();
data = new String[initialCapacity];
}
private void grow() {
if (size <= 1)
data = Arrays.copyOf(data, data.length + 1);
else
data = Arrays.copyOf(data, data.length + (data.length >> 1));
}
public void add(String str) {
// 判断是否需要扩容
if (size >= data.length)
this.grow();
data[size] = str;
size++;
}
public void add(int index, String str) {
// 判断指定的下标是否越界
if (index > size || index < 0)
throw new IndexOutOfBoundsException("Index:" + index + ", Size:" + size);
// 判断扩容
if (size >= data.length)
this.grow();
// for(int i = size - 1; i >= index; i--){
// data[i + 1] = data[i];
// }
System.arraycopy(data, index, data, index + 1, size - index);
data[index] = str;
size++;
}
private void out(int index) {
// 判断下标越界
if (index >= size || index < 0)
throw new IndexOutOfBoundsException("Index:" + index + ", Size:" + size);
}
public void remove(int index) {
out(index);
// for (int i = index; i < size - 1; i++) {
// data[i] = data[i + 1];
// }
System.arraycopy(data, index + 1, data, index, size - (index + 1));
size--;
}
public void remove(String str) {
int index = this.indexOf(str);
if (index != -1)
this.remove(index);
}
public int indexOf(String str) {
for (int i = 0; i < size; i++) {
if (data[i] == str || data[i] != null && data[i].equals(str)) {
return i;
}
}
return -1;
}
public void set(int index, String str) {
out(index);
data[index] = str;
}
public String get(int index) {
out(index);
return data[index];
}
public boolean contains(String str) {
return indexOf(str) != -1;
}
public int size() {
return size;
}
public boolean isEmpty() {
return size <= 0;
}
public void clear() {
data = new String[10];
size = 0;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder("[");
for (int i = 0; i < size; i++) {
sb.append(data[i]).append(", ");
}
String str = sb.toString();
if (size > 0)
str = str.substring(0, str.length() - 2);
return str += "]";
}
}
顺序表在java中的实现
猜你喜欢
转载自blog.csdn.net/theBearIntarena/article/details/81147775
今日推荐
周排行