arraylist.java

来自「Sony Ericsson手机上的Facebook客户端全套代码」· Java 代码 · 共 227 行

JAVA
227
字号
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   ArrayList.java

package se.southend.drops.tools;


// Referenced classes of package se.southend.drops.tools:
//            List

public class ArrayList
    implements List
{

    public ArrayList()
    {
        this(6);
    }

    public ArrayList(int capacity)
    {
        if(capacity < 0)
            capacity = 0;
        data = new Object[capacity];
    }

    public Object[] getArray()
    {
        return data;
    }

    public void trim()
    {
        if(data.length > size)
            setCapacity(size);
    }

    public void setCapacity(int capacity)
    {
        Object temp[] = data;
        data = new Object[capacity];
        System.arraycopy(((Object) (temp)), 0, ((Object) (data)), 0, size);
    }

    public final Object get(int index)
    {
        return data[index];
    }

    public final void set(Object element, int index)
    {
        data[index] = element;
    }

    public final Object first()
    {
        return data[0];
    }

    public final Object last()
    {
        return data[size - 1];
    }

    public void add(Object element)
    {
        updateCapacity(size + 1);
        data[size++] = element;
    }

    public void add(Object elements[])
    {
        if(elements != null)
        {
            int nbrElements = elements.length;
            updateCapacity(size + nbrElements);
            System.arraycopy(((Object) (elements)), 0, ((Object) (data)), size, nbrElements);
            size += nbrElements;
        } else
        {
            add((Object)null);
        }
    }

    public void insert(Object element, int index)
    {
        updateCapacity(size + 1);
        System.arraycopy(((Object) (data)), index, ((Object) (data)), index + 1, size - index);
        data[index] = element;
        size++;
    }

    public void insert(Object elements[], int index)
    {
        int nbrElements = elements.length;
        updateCapacity(size + nbrElements);
        int after = size - index;
        if(after > 0)
            System.arraycopy(((Object) (data)), index, ((Object) (data)), index + nbrElements, after);
        System.arraycopy(((Object) (elements)), 0, ((Object) (data)), index, nbrElements);
        size += nbrElements;
    }

    public void remove(Object element)
    {
        int index = indexOf(element, 0);
        if(index >= 0)
            remove(index);
    }

    public void remove(int index)
    {
        int after = size - index - 1;
        if(after > 0)
            System.arraycopy(((Object) (data)), index + 1, ((Object) (data)), index, after);
        data[--size] = null;
    }

    public void remove(int fromIndex, int toIndex)
    {
        int after = size - toIndex;
        if(after > 0)
            System.arraycopy(((Object) (data)), toIndex, ((Object) (data)), fromIndex, after);
        for(int newSize = size - (toIndex - fromIndex); size != newSize;)
            data[--size] = null;

    }

    public int indexOf(Object element)
    {
        return indexOf(element, 0);
    }

    public int indexOf(Object element, int fromIndex)
    {
        if(element == null)
        {
            for(int i = fromIndex; i < size; i++)
                if(data[i] == null)
                    return i;

        } else
        {
            for(int i = fromIndex; i < size; i++)
                if(element.equals(data[i]))
                    return i;

        }
        return -1;
    }

    public int lastIndexOf(Object element)
    {
        return lastIndexOf(element, size - 1);
    }

    public int lastIndexOf(Object element, int fromIndex)
    {
        if(element == null)
        {
            for(int i = fromIndex; i >= 0; i--)
                if(data[i] == null)
                    return i;

        } else
        {
            for(int i = fromIndex; i >= 0; i--)
                if(element.equals(data[i]))
                    return i;

        }
        return -1;
    }

    public void empty()
    {
        for(int i = 0; i < size; i++)
            data[i] = null;

        size = 0;
    }

    public boolean contains(Object element)
    {
        return indexOf(element, 0) >= 0;
    }

    public final boolean isEmpty()
    {
        return size == 0;
    }

    public final int size()
    {
        return size;
    }

    public Object[] toArray()
    {
        Object result[] = new Object[size];
        return toArray(result, 0);
    }

    public Object[] toArray(Object result[], int offset)
    {
        System.arraycopy(((Object) (data)), 0, ((Object) (result)), offset, size);
        return result;
    }

    private void updateCapacity(int capacity)
    {
        int currentCapacity = data.length;
        if(capacity > currentCapacity)
        {
            currentCapacity = (currentCapacity * 3 >> 1) + 1;
            if(currentCapacity < capacity)
                currentCapacity = capacity;
            setCapacity(currentCapacity);
        }
    }

    private static final int DEFAULT_CAPACITY = 6;
    private Object data[];
    private int size;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?