温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ArrayList类的简单编写

发布时间:2020-06-25 03:50:42 来源:网络 阅读:373 作者: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