中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ArrayList類的簡單編寫

發布時間:2020-06-25 03:50:42 來源:網絡 閱讀:370 作者:ckllf 欄目:編程語言

  ArrayList類

  編寫ArrayList類

  package com.mage.arrays;

  public class ArrayList {

  private Object[] arrs;

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

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

  private static final int DEFAULT_CAPACITY = 10;

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

  }

  }

  

ArrayList類的簡單編寫


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平山县| 邵东县| 泸州市| 哈尔滨市| 马鞍山市| 福安市| 闸北区| 房产| 南阳市| 喀喇| 谷城县| 广宗县| 昆明市| 梅河口市| 壤塘县| 龙井市| 乌兰县| 盱眙县| 靖西县| 班玛县| 手游| 安达市| 射阳县| 平江县| 宜章县| 安化县| 洪江市| 固始县| 进贤县| 南通市| 阳高县| 平山县| 桑日县| 平顶山市| 海宁市| 油尖旺区| 柯坪县| 化州市| 寿宁县| 绵阳市| 汾阳市|