「Talk is cheap. Show me the code」
代码语言:javascript复制package com.jmy.list;
import org.junit.Test;
import java.util.Arrays;
public class MyArrayList {
private final int capacity = ;
private String[] list = new String[capacity];
int size = ;
/**
* 向集合中添加元素
*/
public void add(String str){
if (this.isNull(str)) {
throw new IllegalArgumentException("兄弟醒醒!");
}
if (size == list.length) {
this.grow();
}
list[size ] = str;
}
/**
* 向指定下标位置添加元素
* @param index 指定下标
* @param str 想要添加的元素
*/
public void add(int index,String str){
if (this.argument(index)) {
throw new IndexOutOfBoundsException("兄弟醒醒!");
}
if (this.isNull(str)) {
throw new IllegalArgumentException("兄弟醒醒!");
}
if (size == list.length) {
this.grow();
}
for (int i = size; i > index; i--) {
list[i] = list[i - ];
}
list[index] = str;
size ;
}
/**
* 移除此列表中指定位置上的元素。
* @param index 指定下标
* @return 返回被删除元素
*/
public String remove(int index){
if (this.argument(index)) {
throw new IndexOutOfBoundsException("兄弟醒醒!");
}
String str = list[index];
for (int i = index; i < size; i ) {
list[i] = list[i ];
}
size--;
return str;
}
/**
* 删除指定元素
* @param str 要删除的元素
* @return 成功返回true 失败返回false
*/
public boolean remove(String str){
if (this.isNull(str)) {
throw new IllegalArgumentException("兄弟醒醒!");
}
for (int i = ; i < size; i ) {
if (str.equals(list[i])) {
this.remove(i);
return true;
}
}
return false;
}
/**
* 用指定的元素替代此列表中指定位置上的元素。
* @param index 指定位置
* @param str 指定元素
* @return 被替换的元素
*/
public String set(int index, String str){
if (this.argument(index)) {
throw new IndexOutOfBoundsException("兄弟醒醒!");
}
if (this.isNull(str)) {
throw new IllegalArgumentException("兄弟醒醒!");
}
String string = list[index];
list[index] = str;
return string;
}
/**
* 返回此列表中指定位置上的元素。
* @param index 指定位置
* @return 此列表中指定位置上的元素
*/
public String get(int index){
if (this.argument(index)) {
throw new IndexOutOfBoundsException("兄弟醒醒!");
}
return list[index];
}
/*
判断传入的元素是否为空
*/
private boolean isNull(String str){
return str == null ? true : false;
}
private boolean argument(int index){
return index < || index > size ? true : false;
}
/**
* 数组扩容
*/
private void grow (){
if (list.length == ) {
list = Arrays.copyOf(this.list, );
} else {
list = Arrays.copyOf(this.list, this.list.length (this.list.length >> ));
}
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = ; i < size ; i ) {
if (i < size - ) {
sb.append(list[i] ",");
} else {
sb.append(list[i]);
}
}
sb.append("]");
return sb.toString();
}
public static void main(String[] args) {
MyArrayList ml = new MyArrayList();
ml.add("1");
ml.add("2");
ml.add("3");
ml.add("4");
ml.add("5");
ml.add("6");
ml.add("7");
ml.add("8");
ml.add("9");
ml.add("10");
ml.add("11");
ml.set(,"十一");
System.out.println(ml.get());
System.out.println(ml.remove());
System.out.println(ml);
}
}
代码语言:javascript复制
[,,,,,,,,,十一]
Process finished with exit code
测试了一下还是蛮好用的,一个乞丐版的写了一个小时,还是太菜了!!!