⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pvector.java

📁 j2me简单实例,j2me教程加源码,希望大家喜欢
💻 JAVA
字号:
package com.j2medev.chapter5;
public class PVector {

  public Object[] elements;
  public int length;
  //构造器1
  public PVector() {
    this(8);
  }
  //构造器2
  public PVector(int initCap) {
    elements = new Object[initCap];
    length = 0;
  }
  //判断是否包括某元素
  public boolean contains(Object obj) {
    return indexOf(obj, 0) != -1;
  }
  //查找给定索引的元素
  public Object elementAt(int idx) {
    if (idx >= length || idx < 0) {
      throw new ArrayIndexOutOfBoundsException(idx);
    }
    return elements[idx];
  }
  //在结尾增加元素
  public void addElement(Object obj) {
    if (length >= elements.length) {
      enlarge();
    }
    elements[length++] = obj;
  }
  //在某处插入元素
  public void insertElementAt(Object obj, int idx) {
    if (idx > length || idx < 0) {
      throw new ArrayIndexOutOfBoundsException(idx);
    }
    if (length >= elements.length) {
      enlarge();
    }
    System.arraycopy(elements, idx, elements, idx + 1, length - idx);
    ++length;
    elements[idx] = obj;
  }

  //通过给定索引查找某个元素并给其赋值
  public void setElementAt(Object obj, int idx) {
    if (idx >= length || idx < 0) {
      throw new ArrayIndexOutOfBoundsException(idx);
    }
    elements[idx] = obj;
  }

  //通过给定索引删除某个元素
  public void removeElementAt(int idx) {
    if (idx >= length || idx < 0) {
      //    throw new ArrayIndexOutOfBoundsException(idx);
    }
    else {
      --length;
      System.arraycopy(elements, idx + 1, elements, idx, length - idx);
      elements[length] = null;
    }
  }

  //删除所有给定元素
  public void removeElement(Object obj) {
    //删除空元素
    if (obj == null) {
      for (int i = 0; i < length; i++) {
        if (elements[i] == null) {
          --length;
          System.arraycopy(elements, i + 1, elements, i, length - i);
          elements[length] = null;
          break;
        }
      }
    }
    //删除给定元素
    else {
      for (int i = 0; i < length; i++) {
        if (obj.equals(elements[i])) {
          --length;
          System.arraycopy(elements, i + 1, elements, i, length - i);
          elements[length] = null;
          break;
        }
      }
    }
  }

  //取得给定元素的索引
  public int indexOf(Object obj) {
    return indexOf(obj, 0);
  }

  //从给定索引开始查找某元素的索引
  public int indexOf(Object obj, int idx) {
    if (obj == null) {
      for (int i = idx; i < length; i++) {
        if (elements[i] == null) {
          return i;
        }
      }
    }
    else {
      for (int i = idx; i < length; i++) {
        if (obj.equals(elements[i])) {
          return i;
        }
      }
    }
    return -1;
  }

  //删除所有元素
  public void removeAllElements() {
    for (int i = length; --i >= 0; ) {
      elements[i] = null;
    }
    length = 0;
  }

  //分配空间的大小
  public int size() {
    return length;
  }

  public Object[] toArray() {
    if (length == elements.length) {
      return elements;
    }
    else {
      Object[] ret = new Object[length];
      System.arraycopy(elements, 0, ret, 0, length);
      return ret;
    }
  }

  //拷贝至新数组
  public void copyInto(Object[] anArray) {
    System.arraycopy(elements, 0, anArray, 0, length);
  }

  //缩减空间
  public void trimToSize() {
    Object[] newarray = new Object[length];
    System.arraycopy(elements, 0, newarray, 0, length);
    elements = null;
    elements = newarray;
  }

  //扩大空间多一倍
  private void enlarge() {
    Object[] newarray = new Object[elements.length * 2];
    System.arraycopy(elements, 0, newarray, 0, elements.length);
    elements = null;
    elements = newarray;
  }
}

⌨️ 快捷键说明

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