2集知识点:ArrayList
-
高老师带着我们自己实现了ArrayList以下常用方法:
size()
isEmpty()
add(Object obj)
add(int index,Object obj)
ensureCapacity()
get(int index)
remove(int index)
remove(Object obj)
set(int index,Object obj)
rangeCheck(int index)
课堂代码
package test101_102;
import java.util.ArrayList;
import java.util.List;
/**
* @author wangtao
* 自己实现ArrayList
*
*/
public class Test101_102 {
private Object[] elementData;
private int size;
public int size(){
return size;
}
public boolean isEmpty(){
return size==0;
}
public Test101_102(){
this(10);
}
public Test101_102(int initialCapacity){
if(initialCapacity<0){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
elementData = new Object[initialCapacity];
}
public void add (Object obj){
//数组扩容:新建一个数组,将原来的数据再复制过来
if(size()==elementData.length){
Object[] newArray = new Object[size*2+1];
//System.arraycopy(elementData, 0, newArray, 0, elementData.length);
for(int i=0;i<elementData.length;i++){
newArray[i] = elementData[i];
}
elementData = newArray;
}
elementData[size++] = obj;
}
public void add(int index,Object obj){
rangeCheck(index);
ensureCapacity();
System.arraycopy(elementData, index, elementData,index+1,size-index);
elementData[index] = obj;
size++;
}
public void ensureCapacity(){
if(size == elementData.length){
Object[] newArray = new Object[size*2+1];
System.arraycopy(elementData, 0, newArray, 0, elementData.length);
elementData = newArray;
}
}
public Object get(int index){
rangeCheck(index);
return elementData[index];
}
public void remove(int index){
//删除指定位置对象
int numMove = size - index - 1;
System.arraycopy(elementData, index+1, elementData,index, numMove);
elementData[--size] = null;
}
public void remove(Object obj){
for(int i=0;i<size;i++){
if(get(i).equals(obj)){
remove(i);
}
}
}
public Object set(int index,Object obj){
rangeCheck(index);
Object oldValue = elementData[index];
elementData[index] = obj;
return oldValue;
}
private void rangeCheck(int index){
if(index<0||index>=size){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args){
Test101_102 aaa = new Test101_102(3);
aaa.add("sssa");
aaa.add("sssa");
aaa.add("sssa");
aaa.add("sssa");
aaa.add("sssa");
aaa.add("sssa");
aaa.add("sssa");
System.out.println(aaa.size());
System.out.println(aaa.get(2));
aaa.remove(6);
System.out.println(aaa.size());
}
}