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);
        }
    
    }
  • 相关阅读:
    Linux 小知识翻译
    Linux 小知识翻译
    Linux 小知识翻译
    Linux 小知识翻译
    Linux 小知识翻译
    Linux 小知识翻译
    Linux 小知识翻译
    PAT 甲级 1066 Root of AVL Tree (25 分)(快速掌握平衡二叉树的旋转,内含代码和注解)***
    Internet Download Manager 快速下载插件,破解版
    微积分基本公式(牛顿——莱布尼茨公式)的几何解释
  • 原文地址:https://www.cnblogs.com/brant/p/6231170.html
Copyright © 2011-2022 走看看