zoukankan      html  css  js  c++  java
  • Java集合篇一:ArrayList

    package com.test.collection;
    
    /**
     * 自定义ArrayList容器
     * 
     * 1.实现原理:底层封装数组
     * 
     * 2.查询
     * LinkList 相较 ArrayList 查询效率低:
     * 由于LinkList底层存放元素的不是数组,不能直接通过索引进行获取,需要从头或者从尾逐一遍历索引节点对象。
     * ArrayList直接通过索引获取即可。
     * 
     * 3.删除、插入
     * linkList 相较ArrayList 插入、删除的效率高 
     * LinkList 直接打断前后的链接,链接到新对象即可;
     * 而ArrayList插入之后需要对后面的元素 进行整体移位
     *
     */
    public class MyArrayList {
    
        private int size;
        private Object[] elementData;
        
        public MyArrayList(){
            this(10);
        }
        public MyArrayList(int initialCapacity){
            if(initialCapacity<0){
                try {
                    throw new Exception();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            elementData=new Object[initialCapacity];
        }
        public void add(Object obj){
            ensureCapacity();
            elementData[size++]=obj;
        }
        
        public Object get(int index){
            rangeCheck(index);
            return elementData[index];
        }
        
        //下标越界检查
        private void rangeCheck(int index){
            if(index<0 || index>size){
                try {
                    throw new Exception();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        
        public void ensureCapacity(){
            if(size>=elementData.length){//数组扩容
                Object[] newArray=new Object[size*2+1];
                System.arraycopy(elementData, 0, newArray, 0, elementData.length);
                elementData =newArray;
            }
        }
        public int size(){
            return size;
        }
        /**
         * @param args
         */
        public static void main(String[] args) {
            MyArrayList list=new MyArrayList(3);
            list.add("111");
            list.add("222");
            list.add("333");
            list.add("444");
            System.out.println(list.size);
        }
    
    }
  • 相关阅读:
    sqlalchemy 查询姿势总结
    sqlalchemy 常用总结
    rsyslog 移植与配置方案介绍
    软件设计随想录
    C语言面对对象设计模式汇编
    关于linux kernel slab内存管理的一点思考
    linux PMBus总线及设备驱动分析
    Linux x86_64 APIC中断路由机制分析
    单板控制领域模型设计与实现
    Linux mips64r2 PCI中断路由机制分析
  • 原文地址:https://www.cnblogs.com/brant/p/6231170.html
Copyright © 2011-2022 走看看