ArrayList類的簡單編寫

  ArrayList類數組

  編寫ArrayList類app

  package com.mage.arrays;ide

  public class ArrayList {測試

  private Object[] arrs;this

  private int size; //數組實際存儲元素個數spa

  private int capacity;//底層arrs數組的長度,也就是開的內存空間大小對象

  private static final int DEFAULT_CAPACITY = 10;blog

  public ArrayList() {索引

  this(DEFAULT_CAPACITY);圖片

  }

  public ArrayList(int capacity) {

  arrs = new Object[capacity];

  this.capacity = capacity;

  }

  /**

  * @return 返回數組實際存儲的元素個數

  */

  public int size(){

  return this.size;

  }

  /**

  * @return 返回當前ArrayList底層數組的容量

  */

  public int opacity() {

  return arrs.length;

  }

  /**

  * @return 返回當前數組是否爲null

  */

  public boolean isEmpty() {

  return this.size==0;

  }

  /**

  * 添加元素到指定的位置上

  * @param value 添加的元素

  * @param index 添加的位置

  */

  public void add(Object value,int index) {

  if(index<0||index>size) {

  System.out.println("錯誤參數:index");

  return;

  }

  //存滿了

  if(size==arrs.length) {

  resize(size*2);

  }

  for(int i=size-1;i>=index;i--) {

  arrs[i+1]=arrs[i];

  }

  arrs[index]=value;

  size++;

  }

  /**

  * 添加首元素

  * @param value 添加的元素值

  */

  public void addFirst(Object value) {

  add(value,0);

  }

  /**

  * 添加尾元素

  * @param value

  */

  public void addLast(Object value) {

  add(value,size);

  }

  /**

  * 查詢指定元素在當前數組中的索引位置(只找一個)

  * @param value

  * @return 查找的元素的索引 若是不存在返回-1

  */

  public int getIndexByValue(Object value) {

  for(int i=0;i

  if(arrs[i]==value) {

  return i;

  }

  }

  return -1;

  }

  /**

  * 返回指定索引位置上的元素

  * @param index 索引

  * @return 元素 若是返回null表明當前數組的入參有誤

  */

  public Object get(int index) {

  if(index<0||index>=size) {

  System.out.println("參數有誤:index");

  return null;

  }

  return this.arrs[index];

  }

  /**

  * 修改數組中指定位置上的元素

  * @param index 指定的索引

  * @param value 修改以後的值

  * @return 修改以前的值 若是索引有問題 返回null

  */

  public Object set(int index,Object value) {

  if(get(index)==null) {

  return null;

  }

  Object oldValue=arrs[index];

  arrs[index]=value;

  return oldValue;

  }

  /**

  * 根據索引刪除元素

  * @param index 索引

  * @return 刪除的元素 若是索引有誤 返回null

  */

  public Object remove(int index) {

  if(get(index)==null) {

  return null;

  }

  Object oldValue = arrs[index];

  for(int i=index;i

  arrs[i]=arrs[i+1];

  }

  size--;

  arrs[size]=null;

  if(size==arrs.length/4&&arrs.length/2>0) {

  resize(arrs.length/2);

  }

  return oldValue;

  }

  /**

  * 刪除第一個元素

  * @return

  */

  public Object removeFirst() {

  return remove(0);

  }

  /**

  * 刪除最後元素

  * @return

  */

  public Object removeLast() {

  return remove(size-1);

  }

  /**

  * 數組擴容操做

  * @param capacity 新數組的容量

  */

  private void resize(int capacity) {

  Object[] newArrs = new Object[capacity];

  copyOf(arrs,newArrs);

  arrs = newArrs;

  }

  /**

  * 數組複製

  * @param src 源數組

  * @param dest 目標數組

  */無錫人流多少錢 http://www.bhnnk120.com/

  private void copyOf(Object[] src,Object[] dest) {

  for(int i=0;i

  dest[i]=src[i];

  }

  }

  /**

  * 獲取當前ArrayList的內容

  */

  public String toString() {

  StringBuffer sb = new StringBuffer();

  sb.append("size:"+this.size+"\topacity:"+this.arrs.length+"\t");

  sb.append("[");

  for(int i = 0;i

  sb.append(arrs[i]);

  if(i!=size-1) {

  sb.append(",");

  }

  }

  sb.append("]");

  return sb.toString();

  }

  }

  測試類

  package com.mage.arrays;

  public class TestArrayList {

  public static void main(String[] args) {

  // ArrayList存儲數據的對象

  ArrayList arrayList = new ArrayList();// size = 0 capacity 10

  //測試增長不一樣類型值

  arrayList.addFirst('a');

  arrayList.addFirst("哈哈");

  arrayList.addFirst(44);

  System.out.println(arrayList.toString());

  //測試在最後位置加值

  arrayList.addLast(33);

  System.out.println(arrayList.toString());

  //測試元素加滿了,內存擴容。

  arrayList.addLast(33);

  arrayList.addLast(33);

  arrayList.addLast(33);

  arrayList.addLast(33);

  arrayList.addLast(33);

  arrayList.addLast(44);

  arrayList.addLast(55);

  System.out.println(arrayList.toString());

  //測試移除增長元素會撤回擴容嘛

  arrayList.remove(0);

  System.out.println(arrayList.toString());

  //測試元素個數爲原來的四分之一會壓縮一半內存嘛

  arrayList.remove(0);

  arrayList.remove(0);

  arrayList.remove(0);

  arrayList.remove(0);

  arrayList.remove(0);

  System.out.println(arrayList.toString());

  //測試修改

  arrayList.set(1, "被修改了");

  System.out.println(arrayList.toString());

  }

  }

  

在這裏插入圖片描述
相關文章
相關標籤/搜索