数组的增删改查
package cn.javasm.demo;
import java.util.Arrays;
import java.util.Objects;
public class ArrayListDemo {
private String[] data;
private int size;
public ArrayListDemo(){
data = new String[10];
}
public ArrayListDemo(int initialCapacity){
if (initialCapacity < 0)
throw new IllegalArgumentException();
data = new String[initialCapacity];
}
public void add(String str){
if (size >= data.length){
grow();
}
data[size++] = str;
}
private void grow() {
if (data.length <= 1){
data = Arrays.copyOf(data,data.length + 1);
}else {
data = Arrays.copyOf(data,data.length + (data.length >> 1));
}
}
public void add(int index,String str){
if (index < 0 || index > size)
throw new IndexOutOfBoundsException();
if (size >= data.length)
grow();
System.arraycopy(data,index,data,index + 1,size - index);
data[index] = str;
size++;
}
public void remove(int index){
out(index);
System.arraycopy(data,index + 1,data,index, size - index - 1);
size--;
}
public int indexOf(String str){
for (int i = 0;i < size;i++){
if (Objects.equals(str, data[i])){
return i;
}
}
return -1;
}
public void remove(String str){
int i = indexOf(str);
if (i != - 1)
remove(i);
}
public void clear(){
data = new String[10];
size = 0;
}
public boolean contains(String str){
return indexOf(str) != -1;
}
public String get(int index){
out(index);
return data[index];
}
public boolean isEmpty(){
return size == 0;
}
public void set(int index,String str){
out(index);
data[index] = str;
}
public int size(){
return size;
}
private void out(int index){
if (index <0 || index >= size){
throw new IndexOutOfBoundsException();
}
}
public ArrayListDemo subList(int fromIndex,int toIndex){
if (fromIndex > toIndex){
throw new IllegalArgumentException();
}
out(fromIndex);
out(toIndex);
ArrayListDemo sublist = new ArrayListDemo(toIndex - fromIndex);
System.arraycopy(this.data,fromIndex,sublist.data,0,toIndex - fromIndex);
sublist.size = toIndex - fromIndex;
return sublist;
}
public String toString(){
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("[");
for (int i = 0; i < size; i++) {
if (i != size - 1){
stringBuilder.append(data[i]).append(", ");
}else {
stringBuilder.append(data[i]);
}
}
stringBuilder.append("]");
return stringBuilder.toString();
}
}