ArrayList
public class ArrrayList1 {
Object[] elementData;
int size;
public ArrrayList1() {
this(10);
}
public ArrrayList1(int c){
if(c>0){
elementData=new Object[c];
}else{
elementData=new Object[10];
}
}
public boolean add(Object obj){
if(size+1>elementData.length){
Object[] newArray=new Object[size+(size>>1)];
System.arraycopy(elementData,0,newArray,0,size);
elementData=newArray;
}
elementData[size++]=obj;
return true;
}
public boolean add(int index,Object obj){
if(index<0||index>=size){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
if(size>elementData.length){
Object[] newArray=new Object[size+(size>>1)];
System.arraycopy(elementData,0,newArray,0,size);
elementData=newArray;
}
System.arraycopy(elementData,index,elementData,index+1,size-index);
elementData[index]=obj;
return true;
}
public Object get(int index){
if(index<0||index>=size){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
return elementData[index];
}
public Object remove(int index){
if(index<0||index>=size){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
Object oldvlue=elementData[index];
System.arraycopy(elementData,index+1,elementData,index,size-index-1);
elementData[--size]=null;
return oldvlue;
}
public static void main(String[] args){
ArrrayList1 arrrayList1=new ArrrayList1();
arrrayList1.add("da");
arrrayList1.add("yeye");
arrrayList1.add("zhang");
arrrayList1.add("1");
arrrayList1.add("2");
arrrayList1.add("3");arrrayList1.add("8");
arrrayList1.add("4");
arrrayList1.add("5");
arrrayList1.add("6");
arrrayList1.add("7");
arrrayList1.remove(2);
for(int i=0;i<arrrayList1.size;i++){
System.out.println(arrrayList1.get(i));
}
}
}
ArrayList的底层实现是数组
LinkedList
public class LinkList {
Node first;//头
Node last;//尾
int size;
public void add(Object obj){
Node n=new Node();
if(first==null){
first=n;
first.previous=null;
first.obj=obj;
first.next=null;
first=n;
last=n;
}else{
n.previous=last;
last.next=n;
n.obj=obj;
n.next=null;
last=n;
}
size++;
}
public Object get(int index){
Node temp=first;
for(int i=0;i<index;i++){
temp=temp.next;
}
return temp.obj;
}
public void move(Object obj){
Node temp=first;
for(int i=0;i<size;i++){
if(temp.obj.equals(obj)){
Node up=temp.previous;
Node down=temp.next;
up.next=down;
down.previous=up;
size--;
}
temp=temp.next;
}
}
public static void main(String[] args){
LinkList linkList=new LinkList();
linkList.add("zhangrui");
linkList.add("ruirui");
linkList.add("zhang");
linkList.move("ruirui");
for(int i=0;i<linkList.size;i++){
System.out.println(linkList.get(i));
}
}
}
class Node{//节点
Node previous;
Object obj;
Node next;
}
LinkedList的底层实现是链表