Arraylist
Arraylist 就是底层基于数组实现的容量大小的动态变化,会占用一片连续的内存空间,Arraylist线程不安全,允许元素为null,好处就是可以动态的增加或删除元素,灵活的设置数组大小,但查询快,增删慢。
核心方法:
add方法
public void add(T value){
//判断是否需要扩容
if(size == elements.length){
this.elements = Arrays.copyOf(this.elements,this.elements.length*2);
}
//添加元素
elements[size++] = value;
}
remove方法
checkIndex方法判断是否越界
public void checkIndex(int index){
if(index < 0 || index > elements.length){
throw new UnsupportedOperationException("the index is illegal");
}
}
//删除某一下标的值
public boolean remove(int index){
try{
checkIndex(index);
System.arraycopy(this.elements,index+1,this.elements,index,size-1-index);
elements[--size] = null;
return true;
}catch(UnsupportedOperationException e){
System.out.println(e.getMessage());
return false;
}
}
set方法
public void set(int index,T newvalue){
//设置某一下标为新值
try{
checkIndex(index);
//修改下标为新值
elements[index] = newvalue;
}catch(UnsupportedOperationException e){
System.out.println(e.getMessage());
}
}
get方法
public T get(int index){
//返回指定下标的值
try{
checkIndex(index);
return elements[index];
}catch(UnsupportedOperationException e){
System.out.println(e.getMessage());
return null;
}
}
判断Arraylist中是否包含所查找的value
//判断当前list是否包含value
public boolean contains(T value){
for (int i = 0; i < size; i++) {
if(elements[i].equals(value)){
return true;
}
}
return false;
}