溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

ArrayList類(lèi)的簡(jiǎn)單編寫(xiě)

發(fā)布時(shí)間:2020-06-25 03:50:42 來(lái)源:網(wǎng)絡(luò) 閱讀:362 作者:ckllf 欄目:編程語(yǔ)言

  ArrayList類(lèi)

  編寫(xiě)ArrayList類(lèi)

  package com.mage.arrays;

  public class ArrayList {

  private Object[] arrs;

  private int size; //數(shù)組實(shí)際存儲(chǔ)元素個(gè)數(shù)

  private int capacity;//底層arrs數(shù)組的長(zhǎng)度,也就是開(kāi)的內(nèi)存空間大小

  private static final int DEFAULT_CAPACITY = 10;

  public ArrayList() {

  this(DEFAULT_CAPACITY);

  }

  public ArrayList(int capacity) {

  arrs = new Object[capacity];

  this.capacity = capacity;

  }

  /**

  * @return 返回?cái)?shù)組實(shí)際存儲(chǔ)的元素個(gè)數(shù)

  */

  public int size(){

  return this.size;

  }

  /**

  * @return 返回當(dāng)前ArrayList底層數(shù)組的容量

  */

  public int opacity() {

  return arrs.length;

  }

  /**

  * @return 返回當(dāng)前數(shù)組是否為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("錯(cuò)誤參數(shù):index");

  return;

  }

  //存滿(mǎn)了

  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);

  }

  /**

  * 查詢(xún)指定元素在當(dāng)前數(shù)組中的索引位置(只找一個(gè))

  * @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代表當(dāng)前數(shù)組的入?yún)⒂姓`

  */

  public Object get(int index) {

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

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

  return null;

  }

  return this.arrs[index];

  }

  /**

  * 修改數(shù)組中指定位置上的元素

  * @param index 指定的索引

  * @param value 修改之后的值

  * @return 修改之前的值 如果索引有問(wèn)題 返回null

  */

  public Object set(int index,Object value) {

  if(get(index)==null) {

  return null;

  }

  Object oldValue=arrs[index];

  arrs[index]=value;

  return oldValue;

  }

  /**

  * 根據(jù)索引刪除元素

  * @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;

  }

  /**

  * 刪除第一個(gè)元素

  * @return

  */

  public Object removeFirst() {

  return remove(0);

  }

  /**

  * 刪除最后元素

  * @return

  */

  public Object removeLast() {

  return remove(size-1);

  }

  /**

  * 數(shù)組擴(kuò)容操作

  * @param capacity 新數(shù)組的容量

  */

  private void resize(int capacity) {

  Object[] newArrs = new Object[capacity];

  copyOf(arrs,newArrs);

  arrs = newArrs;

  }

  /**

  * 數(shù)組復(fù)制

  * @param src 源數(shù)組

  * @param dest 目標(biāo)數(shù)組

  */無(wú)錫人流多少錢(qián) http://www.bhnnk120.com/

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

  for(int i=0;i

  dest[i]=src[i];

  }

  }

  /**

  * 獲取當(dāng)前ArrayList的內(nèi)容

  */

  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();

  }

  }

  測(cè)試類(lèi)

  package com.mage.arrays;

  public class TestArrayList {

  public static void main(String[] args) {

  // ArrayList存儲(chǔ)數(shù)據(jù)的對(duì)象

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

  //測(cè)試增加不同類(lèi)型值

  arrayList.addFirst('a');

  arrayList.addFirst("哈哈");

  arrayList.addFirst(44);

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

  //測(cè)試在最后位置加值

  arrayList.addLast(33);

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

  //測(cè)試元素加滿(mǎn)了,內(nèi)存擴(kuò)容。

  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());

  //測(cè)試移除增加元素會(huì)撤回?cái)U(kuò)容嘛

  arrayList.remove(0);

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

  //測(cè)試元素個(gè)數(shù)為原來(lái)的四分之一會(huì)壓縮一半內(nèi)存嘛

  arrayList.remove(0);

  arrayList.remove(0);

  arrayList.remove(0);

  arrayList.remove(0);

  arrayList.remove(0);

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

  //測(cè)試修改

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

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

  }

  }

  

ArrayList類(lèi)的簡(jiǎn)單編寫(xiě)


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI