1. 程式人生 > >手動實現 容器

手動實現 容器

package imp indexof print gho n) get ech JD

 

  1 package cn.xlf.myarraylist;
  2 
  3 import java.util.ArrayList;
  4 
  5 /**
  6  * 模擬實現 JDK中提供的ArrayList類
  7  * @author ZBG34854
  8  *
  9  */
 10 public class MyArrayList {
 11      /**
 12      * The value is used for object storage.
 13      */
 14     private Object[] value;
 15 
 16     /**
17 * The count is the number of object used. 18 */ 19 private int size; 20 //初始化 21 public MyArrayList(){ 22 this(10); // 用一個構造器 調另一個構造器 23 //value = new Object[10]; 24 } 25 public MyArrayList(int size){ 26 value = new Object[size]; 27 } 28
29 public int size(){//返回 數組的 元素個數 30 return size; 31 } 32 //賦值 33 public void add(Object obj){ 34 value[size] = obj; 35 size++; 36 //數組自動擴容 37 if(size >= value.length){ 38 //擴容 39 int newCapacity = value.length * 2;
40 Object[] newList = new Object[newCapacity]; 41 for(int i = 0; i < value.length; i++){ 42 newList[i] = value[i]; 43 } 44 45 value = newList; 46 } 47 } 48 49 public Object get(int index){ 50 rangeCheck(index); 51 return value[index]; 52 } 53 54 public int indexOf(Object obj){ 55 if(obj == null ){ 56 return -1; 57 }else{ 58 for(int i = 0;i<value.length;i++){ 59 if(obj==value[i]){ 60 return i; 61 } 62 } 63 return -1; 64 } 65 } 66 //倒著按索引求值 67 public int lastIndexOf(Object obj){ 68 if(obj == null ){ 69 return -1; 70 }else{ 71 for(int i = value.length-1;i>=0;i--){ 72 if(obj==value[i]){ 73 return i; 74 } 75 } 76 return -1; 77 } 78 } 79 80 81 public void rangeCheck(int index){ 82 if(index < 0 || index > size - 1){ 83 try{ 84 throw new Exception();//手動拋出異常 85 }catch(Exception e){ 86 e.printStackTrace(); 87 } 88 } 89 } 90 91 public Object set(int index, Object object){ 92 rangeCheck( index); 93 Object old = value[index]; 94 value[index] = object; 95 return old; 96 } 97 98 public static void main(String[] args) { 99 MyArrayList list = new MyArrayList(2); 100 list.add("aaa"); 101 list.add(new Human("ghost")); 102 list.add("ddddd"); 103 list.add("ddddd"); 104 list.add("ddddd"); 105 list.add("ddddd"); 106 list.add("ddddd"); 107 ArrayList list2; 108 109 Human h = (Human)list.get(1); 110 System.out.println(h.getName()); 111 112 System.out.println(list.get(0)); 113 114 System.out.println(list.get(2)); 115 116 System.out.println(list.size()); 117 } 118 119 120 121 122 }

HUMAN 方法

package cn.xlf.myarraylist;

public class Human {
    
    private String name;

    public Human(String name) {
        super();
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    

}

技術分享圖片

package cn.xlf.myarraylist;
import java.util.ArrayList;
/** * 模擬實現 JDK中提供的ArrayList類 * @author ZBG34854 * */public class MyArrayList { /** * The value is used for object storage. */ private Object[] value;
/** * The count is the number of object used. */ private int size; //初始化 public MyArrayList(){ this(10); // 用一個構造器 調另一個構造器 //value = new Object[10]; } public MyArrayList(int size){ value = new Object[size]; } public int size(){ return size; } //賦值 public void add(Object obj){ value[size] = obj; size++; //數組自動擴容 if(size >= value.length){ //擴容 int newCapacity = value.length * 2; Object[] newList = new Object[newCapacity]; for(int i = 0; i < value.length; i++){ newList[i] = value[i]; } value = newList; } } public Object get(int index){ rangeCheck(index); return value[index]; } public int indexOf(Object obj){ if(obj == null ){ return -1; }else{ for(int i = 0;i<value.length;i++){ if(obj==value[i]){ return i; } } return -1; } } //倒著按索引求值 public int lastIndexOf(Object obj){ if(obj == null ){ return -1; }else{ for(int i = value.length-1;i>=0;i--){ if(obj==value[i]){ return i; } } return -1; } } public void rangeCheck(int index){ if(index < 0 || index > size - 1){ try{ throw new Exception();//手動拋出異常 }catch(Exception e){ e.printStackTrace(); } } } public Object set(int index, Object object){ rangeCheck( index); Object old = value[index]; value[index] = object; return old; } public static void main(String[] args) {MyArrayList list = new MyArrayList(2);list.add("aaa");list.add(new Human("ghost"));list.add("ddddd");list.add("ddddd");list.add("ddddd");list.add("ddddd");list.add("ddddd");ArrayList list2;Human h = (Human)list.get(1);System.out.println(h.getName());System.out.println(list.get(0));System.out.println(list.get(2));System.out.println(list.size());}
}

手動實現 容器