手动实现ArrayList容器
Posted 思辨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手动实现ArrayList容器相关的知识,希望对你有一定的参考价值。
1 package text; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 public class SxtArrayList{ 7 private Object[] elementData; 8 private int size; 9 10 public int size(){ 11 return size; 12 } 13 public boolean isEmpty(){ 14 return size ==0; 15 } 16 public SxtArrayList(){ 17 this(10); 18 } 19 public SxtArrayList(int initialCapacity){ //构造器 20 if(initialCapacity<0){ 21 try{ 22 throw new Exception(); 23 }catch (Exception e){ 24 e.printStackTrace(); 25 } 26 } 27 elementData= new Object[initialCapacity]; 28 29 } 30 31 public void add(Object obj){ 32 //数组扩容 33 if(size==elementData.length){ 34 Object[] newArray= new Object[size*2+1]; 35 // System.arraycopy(elementData,0,newArray,0,elementData.length); 36 for(int i=0;i<elementData.length;i++){ 37 newArray[i]=elementData[1]; 38 } 39 elementData= newArray; 40 } 41 elementData[size]=obj; 42 size++; 43 } 44 public Object get(int index){ 45 if(index<0||index>=size){ 46 try{ 47 throw new Exception(); 48 }catch (Exception e){ 49 e.printStackTrace(); 50 } 51 } 52 return elementData[index]; 53 } 54 public void remove(int index){ 55 if(index<0||index>=size){ 56 try{ 57 throw new Exception(); 58 }catch (Exception e){ 59 e.printStackTrace(); 60 } 61 62 } 63 int numMoved=size-index-1; 64 if(numMoved>0){ 65 System.arraycopy(elementData,index+1,elementData,index,numMoved); 66 } 67 elementData[--size]=null; 68 } 69 public void rangeCheck(int index){ 70 if(index<0||index>=size){ 71 try{ 72 throw new Exception(); 73 }catch (Exception e){ 74 e.printStackTrace(); 75 } 76 77 } 78 } 79 // public void remove(Object obj){ 80 // for(int i=0;i<size;i++){ 81 // if(get(i).equals(obj)){//注意:底层调用的equals方法,不是== 82 // remove(i); 83 // } 84 // } 85 // } 86 public Object set(int index,Object obj){ 87 rangeCheck(index); 88 Object oldValue= elementData[index]; 89 elementData[index]=obj; 90 return oldValue; 91 } 92 public static void main(String[] args){ 93 SxtArrayList list2=new SxtArrayList(3); 94 list2.add("222"); 95 list2.add("222"); 96 list2.add("222"); 97 list2.add("222"); 98 list2.add("222"); 99 list2.add("222"); 100 System.out.println(list2.size); 101 102 Object str2=list2.get(5); 103 System.out.println(str2); 104 list2.remove(2); 105 System.out.println(list2.size); 106 } 107 108 }
以上是关于手动实现ArrayList容器的主要内容,如果未能解决你的问题,请参考以下文章