zoukankan      html  css  js  c++  java
  • 手动实现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 }
  • 相关阅读:
    MQTT---HiveMQ源代码具体解释(四)插件载入
    HTTP访问控制(CORS)
    java实现限流
    Orika的使用姿势,Orika java bean copy 框架
    uploadify是通过flash上传,服务器获取type为application/octet-stream
    ThinkPHP 5使用 Composer 组件名称可以从https://packagist.org/ 搜索到
    3种方法轻松处理php开发中emoji表情的问题
    解决thinkphp设置session周期无效的问题
    如何使用沙箱测试单笔转账到支付宝账号(php版) https://openclub.alipay.com/read.php?tid=1770&fid=28
    微信jssdk批量添加卡券接口
  • 原文地址:https://www.cnblogs.com/qingsheng/p/9118562.html
Copyright © 2011-2022 走看看