find your ArrayList,find yourself

6924 ワード

物には本末があり、事には終始があり、前後を知ると、近道になる.題記.よく見かけるのは、必ずしもそれを知っているとは限らない.この言葉ArrayListは長い間心の中で我慢していました!人を使ってそんなに長い間、ソースコードをつけて私を見てもいやで、これ以上、あなたが淘汰される日は遠くありません!ふん!!!
ポットの学友は梦の中から惊いて目を覚まして、脳の中であの20歳の初めのArrayListを思い出して、彼はまた本当にまじめに考えました:最近プログラミングはますます骨が折れて、多くの底のものは分からないで、新しい知识、新しいツールに出会った时いつも学ぶのが速くなくて、学ぶのがよくありません.彼は壁に自分が書いた警語を見上げた.男は自分に厳しくしなければならない.
魔法瓶はお腹の肉を振って、eclipseを開けて、自分でデータ構造のツール類を書く道を始めました.の
第1晩:ArrayList機能:配列構成、動的拡張サイズ、添削変更などの操作が可能.
package array;
import java.util.Arrays;
public class ArrayList {

    private int size;
    private static final int CAMACITY = 16;
    private Object[] elementData;

    public int size() {
        return size;
    }

    public ArrayList() {
        elementData = new Object[CAMACITY];
    }

    //  
    public void add(Object o) {
        if (isFull()) {
            increseSize();
        }
        elementData[size] = o;
        size++;
    }

    //  
    public Object remove(int index) {
        if (isEmpty()) {
            throw new RuntimeException("the list is null");
        }
        if (index > elementData.length || index < 0) {
            throw new IllegalArgumentException("IllegalArgument index:" + index);
        }
        System.arraycopy(elementData, index + 1, elementData, index, size - index);
        size--;
        return elementData[index];
    }

    //       
    public void add(int index, Object o) {
        if (isFull()) {
            increseSize();
        }
        Object[] elements = new Object[elementData.length];
        for (int i = index; i < size && i >= 0; i++) {
            elements[i + 1] = elementData[i];
        }
        elements[index] = o;
        elementData = elements;
        size++;
        /**
         *       System.arraycopy(elementData, index, elementData, index+1,
         * size-index);  index      ,  index+1    ,             (size-index)
         * elementData[index]=o;
         */

    }

    //  
    public Object get(int index) {
        if (index < 0) {
            throw new IllegalArgumentException("the argument is an illegalArgument");
        }
        Object o = new Object();
        for (int i = 0; i < size; i++) {
            o = elementData[index];
        }
        return o;
    }

    //   
    public void increseSize() {
        // Object[] newElementData=new Object[CAMACITY*2];
        // for(int i=0;i {
        private int currentIndex = 0;

        @Override
        public boolean hasNext() {
            return currentIndex < size;
        }

        @Override
        public Object next() {
            Object o = new Object();
            o = elementData[currentIndex++];
            return o;
        }
        /**
         *          ,   next  ,       
         */
        @Override
        public void remove() {
            System.arraycopy(elementData, currentIndex, elementData, currentIndex - 1, size - currentIndex + 1);
            currentIndex--;//       1,        
            size--;
        }
    }
}


第二晩:ArrayUtilツールクラス、練習強化
package arrayUtil;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class ArrayUtil {

    /**
     *         a ,           
          : a = [7, 9 , 30, 3]  ,        [3, 30, 9,7]
               a = [7, 9, 30, 3, 4] ,      [4,3, 30 , 9,7]
     * @param origin
     * @return
     */
    
    /**
     *    :    
     */
    ArrayList list=new ArrayList();
    int i=-1;
    public void reverseArray(int[] origin){
        if(i=0){
                list.add(origin[i]);
                i--;
            }
        }
        
    }
    /**
     *    :    
     */
    public void reverseArrayTwo(int[] origin){
        int[] newArr=new int[origin.length];
        for(int i=0; i list1=new ArrayList();
    public Object[] removeZero(int[] oldArray){
        for(int i=0;i arr=new ArrayList<>();
        for(int i=0 ;inewArr[i+1]){
                    newArr[i+1]=newArr[i];
                    newArr[i]=newArr[i+1];
            }
        }
        return  newArr;
    }
    /**
     *               , a1 a2 ,          a3,   a3   a1 a2      ,         
     *    a1 = [3, 5, 7,8]   a2 = [4, 5, 6,7]      a3  [3,4,5,6,7,8]    ,   :        
     */
    public static int[] merge(int[] array1 , int[] array2){
         int lena = array1.length;  
            int lenb=array2.length;  
            int[] c= new int[lena+lenb];  
            int i=0,j=0,k=0; 
            while (iarray2[j]){
                    c[k++]=array2[j++];  
                }else if(array1[i]==array2[j]){
                    c[k++]=array2[j++];
                    i++;//            
                }
            }  
            while(i list=new ArrayList<>();
        if(max<1){
            throw new IllegalArgumentException();
        }
        if(max<2){
            int[] arr={1};
            return arr;
        }
        int i=1,j=1,sum=0;
        list.add(i);
        list.add(j);
        while(sum list=new ArrayList<>();
        int[] arr=new int[max];
        for(int i=2;i list=new ArrayList<>();
        int[] arr=new int[max];
        for(int i=1;i