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);
        }
    
    }
  • 相关阅读:
    Echarts柱状图,颜色随机改变
    输入地名查询出经纬度
    简单的JS数组所有重复元素抽出到一个新数组
    zTree 树形中的搜索定位节点
    vue js 中简单的搜索功能
    百度地图,多边形覆盖物区域,加标签
    pyspider 介绍
    网站的免责声明应当如何撰写才能保护自己的权益
    sftp 设置默认权限
    【聚类算法】谱聚类(Spectral Clustering)
  • 原文地址:https://www.cnblogs.com/brant/p/6231170.html
Copyright © 2011-2022 走看看