zoukankan      html  css  js  c++  java
  • java list内部构造

    看代码吧,如下:
    package com.Core.datastructure;
    import java.lang.reflect.Array;
    import java.util.Collection;
    import junit.framework.TestCase;

    public class ListDemo<T> {
    private int capacity;
    private int size = 0;
    private Object[] elementData;

    public ListDemo(int capcity) {
    this.capacity = capcity;
    elementData = new Object[capacity];
    }

    public ListDemo() {
    this(10);
    }

    public void growCapacity(int growRank) {
    Object newArr = Array.newInstance(elementData.getClass().getComponentType(), capacity
    + growRank);
    System.arraycopy(elementData, 0, newArr, 0,
    Array.getLength(elementData));
    elementData = (Object[]) newArr;
    }

    public void insert(T t) {
    if (capacity > size) {
    elementData[size] = t;
    size++;
    } else {
    growCapacity(1);
    elementData[size] = t;
    size++;
    }
    }

    public void insert(int index, T t) {
    if (index < 0 || index >= size)
    throw new IndexOutOfBoundsException("Index: " + index + ", Size: "
    + size);
    growCapacity(1);
    System.arraycopy(elementData, index, elementData, index + 1, size
    - index);
    elementData[index] = t;
    }

    public boolean remove(T t) {
    if (t == null) {
    for (int i = 0; i < size; i++) {
    if (getEle(i) == null) {
    fastRemove(i);
    return true;
    }
    }
    } else {
    for (int i = 0; i < size; i++) {
    if (getEle(i).equals(t)) {
    fastRemove(i);
    return true;
    }
    }
    }
    return false;

    }

    public T remove(int index) {
                if(index < 0 || index >= size){
                throw new IndexOutOfBoundsException("Index: " + index + ", Size: "
        + size);
                }
                Object obj = elementData[index];
               fastRemove(index);
               return (T) obj;
    }

    public void fastRemove(int index) {
    int numMoved = size - index - 1;
    System.arraycopy(elementData, index + 1, elementData, index, numMoved);
    elementData[--size] = null;
    }

    public T getEle(int index) {
    return (T) elementData[index];
    }
    }
  • 相关阅读:
    jquery,日常 记录知识 点 (选择器的引用类型)
    jQuery之map()和get() map().get().join意思
    转 谈谈JS里的{ }大括号和[ ]中括号的用法,理解后就可以看懂JSON结构了。
    CSS属性
    CSS3属性
    写网页的随意 记录要点
    css,查询相应标签,div等
    CSS ,浮动,clear记录,和一些转载别处
    linux下如何关闭防火墙?如何查看防火墙当前的状态
    Objective-C和Swift混合编程开发
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/2993357.html
Copyright © 2011-2022 走看看