• 练习:自己写一个容器ArrayList集合 一一数组综合练习


      1 package cn.bjsxt.myCollection;
      2 
      3 import java.util.Arrays;
      4 
      5 /**
      6  * 天下文章一大抄,看你会抄不会抄。
      7  * 模拟Stringbuilder 写一个容器
      8  * 参照源码
      9  * 
     10  * 
     11  * @author Administrator
     12  *
     13  */
     14 public class MyArrayList {
     15     /**
     16      * The value is used for  object storage.
     17      */
     18     private Object[]value;
     19 
     20     /** 
     21      * The size is the number of characters used.
     22      */
     23     private int size;
     24     
     25     //查看size大小
     26     public int size(){
     27         return size;
     28     }
     29     //是否是空
     30     public boolean isEmpty(){
     31         return size==0;
     32     }
     33     
     34  //构造器
     35     public MyArrayList(){
     36         //value = new Object[16];
     37         this(10);
     38     }
     39     
     40     
     41     public MyArrayList(int size){
     42         if(size<0){
     43             
     44             try {
     45                 throw new Exception();
     46             } catch (Exception e) {
     47                 
     48                 e.printStackTrace();
     49             }
     50         }
     51         
     52         value = new Object[size];
     53     }
     54  
     55     //取出对象的方法 
     56     public Object get(int index) {
     57 //        //index范围[0,size-1]或者[0,index)一样
     58 //        if(index<0||index>size-1){
     59 //            
     60 //            try {
     61 //                throw new Exception();
     62 //            } catch (Exception e) {
     63 //                
     64 //                e.printStackTrace();
     65 //            }
     66 //            
     67 //        }
     68         rangeCheck(index);
     69         return value[index];
     70     }   
     71     
     72     //set
     73     public Object set(int index,Object object){
     74         //碰到 索引 都要判断    把下面代码封装成方法
     75 //           //index范围[0,size-1]或者[0,index)一样
     76 //        if(index<0||index>size-1){
     77 //            
     78 //            try {
     79 //                throw new Exception();
     80 //            } catch (Exception e) {
     81 //                
     82 //                e.printStackTrace();
     83 //            }
     84 //            
     85 //        }
     86         rangeCheck(index);
     87         Object old = value[index];
     88         value[index] = object;
     89         return old;
     90     }
     91     public  void rangeCheck(int index){
     92            //index范围[0,size-1]或者[0,index)一样
     93         if(index<0||index>size-1){
     94             
     95             try {
     96                 throw new Exception();
     97             } catch (Exception e) {
     98                 
     99                 e.printStackTrace();
    100             }
    101             
    102         }
    103     }
    104     
    105     //添加方法
    106     public void add(Object obj){
    107         value[size]=obj;
    108         size++;
    109         if(size>=value.length){
    110             //装不下了 扩容吧
    111             int newCapacity = value.length*2+1;
    112             Object[]newList = new Object[newCapacity];
    113             
    114             //System.arraycopy(src, srcPos, dest, destPos, length);
    115             
    116             for(int i=0;i<value.length;i++){
    117                 newList[i] = value[i];
    118             }
    119             value = newList;
    120         }
    121     }
    122     
    123     
    124     
    125     //查某个对象的下标值
    126     public int indexOf(Object obj){
    127         if(obj==null){
    128             return -1;
    129         }else{
    130             for(int i=0;i<value.length;i++){
    131                 if(obj==value[i]){
    132                     return i;
    133                 }
    134             }
    135             return -1;
    136         }
    137     }
    138     //倒着第一次出现某个对象的下标值
    139     public int lastIndexOf(Object obj){
    140         if(obj==null){
    141             return -1;
    142         }else{
    143             for(int i=value.length-1;i>=0;i--){
    144                 if(obj==value[i]){
    145                     return i;
    146             }
    147         }
    148             return -1;
    149     }
    150 }  
    151 
    152     public static void main(String[] args) {
    153         MyArrayList list = new MyArrayList(2);
    154         list.add("aaa");
    155         list.add(new Human("小高"));
    156         list.add("bbb");
    157         
    158         Human h=(Human)list.get(1);
    159         
    160         System.out.println(list.get(1));
    161         System.out.println(h.getName());
    162         /**
    163         *上面创建3个对象  你查第四个 不存在的
    164         *System.out.println(list.get(3));
    165         *越界异常
    166         *java.lang.Exception
    167         *    at cn.bjsxt.myCollection.MyArrayList.get(MyArrayList.java:62)             
    168         *    at cn.bjsxt.myCollection.MyArrayList.main(MyArrayList.java:82)
    169         */
    170         System.out.println(list.size());
    171     }
    172     
    173     
    174 }
  • 相关阅读:
    [HDU1087]Super Jumping! Jumping! Jumping!<dp>
    [codeforces]Page Numbers <模拟>
    [POJ1190]生日蛋糕<DFS>
    [HDU1029]Ignatius and the Princess IV<桶 水题>
    矩阵优化
    康复式训练
    bzoj1036 [ZJOI2008]树的统计Count
    luogu3761 [TJOI2017]城市
    bzoj2282 [SDOI2011]消防
    NOI2014
  • 原文地址:https://www.cnblogs.com/PoeticalJustice/p/7625810.html
Copyright © 2020-2023  润新知