import java.util.Arrays;/*** 自定义ArrayList*/
public class MyArrayList {private Object[] elementData = {};private int size;/*** 构造方法*/public MyArrayList() { }/*** 数组大小* @return*/public int size() {return size;}/*** 数组是否为空* @return*/public boolean isEmpty() {return size == 0;}/*** 扩容* @param minCapacity*/private void grow(int minCapacity) {if(minCapacity - elementData.length > 0) {int oldCapacity = elementData.length;int newCapacity = oldCapacity + (oldCapacity >> 1);if(newCapacity - minCapacity < 0) {newCapacity = minCapacity;}elementData = Arrays.copyOf(elementData, newCapacity);}}/*** 检测下标是否越界* @param index*/private void checkRange(int index) {if(index >= size || index < 0) {throw new IndexOutOfBoundsException();}}/*** 添加元素到末尾* @param o* @return*/public boolean add(Object o) {grow(size + 1);elementData[size++] = o;return true;}/*** 添加元素到指定位置* @param index* @param o*/public void add(int index, Object o) {if(!(index <= size && index >= 0)) {throw new IndexOutOfBoundsException();}grow(size + 1);System.arraycopy(elementData, index, elementData, index + 1, size - index);elementData[index] = o;size++;}/*** 根据下标获取元素* @param index* @return*/public Object get(int index) {checkRange(index);return elementData[index];}/*** 删除元素* @param index*/private void fastRemove(int index) {int numMoved = size - index - 1;if(numMoved > 0) {System.arraycopy(elementData, index + 1, elementData, index, numMoved);}elementData[--size] = null;}/*** 根据下标删除元素* @param index* @return*/public Object remove(int index) {checkRange(index);Object oldValue = get(index);fastRemove(index);return oldValue;}/*** 根据元素删除数组中的元素* @param o* @return*/public boolean remove(Object o) {if(o == null) {for(int i = 0; i < size; i++) {if(elementData[i] == null) {fastRemove(i);return true;}}}else {for(int i = 0; i < size; i++) {if(o.equals(elementData[i])) {fastRemove(i);return true;}}}return false;}
}

027_自己实现一个ArrayList相关推荐

  1. 写一个ArrayList类的动态代理类

    动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实,代理对象对客户隐藏了实际对象.动态代理可以对请求进行其他的一些处理,在不允许直接访问某些类,或需要对访问做一些特殊处理等,这时候可以考虑 ...

  2. 面试题6:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

    题目 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路 使用栈依次存放输入的链表顺序的值,然后依次出栈便是链表的逆序. 代码 import java.util.ArrayList ...

  3. 笔试题:写一个ArrayList 的动态代理类

    package com.zhangxueliang.demo;import java.lang.reflect.InvocationHandler; import java.lang.reflect. ...

  4. 在java中arraylist_在Java中将ArrayList添加到另一个ArrayList

    我有以下Java代码,其中我试图将ArrayList复制到另一个ArrayList. ArrayList nodes = new ArrayList(); ArrayList NodeList=new ...

  5. Java中ArrayList问题:删除一个ArrayList中的重复元素,注意留意一个问题

    该问题有两种方法: 一 利用两个数组,此法简单,不讨论 二 利用一个数组,从第0个开始依次取元素,并在其后元素中查找是否有该元素,有则删掉后面的重复元素,依次遍历.---但是这种情况要特别注意,当后续 ...

  6. java 连接两个arraylist,java – 在两个线程之间共享一个ArrayList?

    既然你已经使用了动词'push'和'poll',那么你似乎在寻找一个不是列表的队列. 因此,我认为您正在寻找记录为here的ConcurrentLinkedQueue. 它允许您让UserReques ...

  7. arrylist输入_创建一个ArrayList对象利用Add方法为其添加元素在文本框中输入数据在ArrayList查找?...

    展开全部 如果是完全匹配的查找可以这样 public static void main(String[] args) { // TODO Auto-generated method stub Arra ...

  8. Java根据txt文件数据得到list_java中如何将一个txt文件中的数字读取到一个ArrayList集合中?...

    展开全部 import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java ...

  9. 练习:自己写一个容器ArrayList集合 一一数组综合练习2

    1 package cn.bjsxt.collection; 2 3 /** 4 * 自己实现一个ArrayList 5 */ 6 import java.util.ArrayList; 7 impo ...

最新文章

  1. 相关性检验_相关系数
  2. sys_connect_by_path
  3. POJ - 1922 Ride to School(思维+贪心)
  4. BeanUtils自定义转换器
  5. 拆分js文件_2021入门Webpack,看这篇就够了:Webpack.config.js 解析
  6. c++ primer 笔记 (三)
  7. Java 修改文件最后的创建日期
  8. web单页应用(一)
  9. 计算机组成原理计算题题库,计算机组成原理习题库.doc
  10. 贺利坚老师汇编课程36笔记:[BX+SI+IDATA]和[BX+DI+IDATA]寻址
  11. Python如何安装模块
  12. 计算机会计学实验报告,计算机会计学实验报告5(UFO报表管理).docx
  13. 大数据与云计算的关系?
  14. 【华为校招】【校招】【Java】叠积木
  15. 服务器提示临时文件已满,为什么显示“临时文件夹已满或不能访问”
  16. 全闪存存储的服务器虚拟化场景应用
  17. TTCN中PTC的运行流程
  18. 组件化、模块化、Composing Builds
  19. [转]情侣相处最佳模式
  20. 【Unity Shader编程】之十五 屏幕高斯模糊(Gaussian Blur)后期特效的实现

热门文章

  1. 学习笔记#Android Studio 从安装到虚拟机启动
  2. uva-10152-乌龟排序
  3. 《Excel 职场手册:260招菜鸟变达人》一第 20 招 怎样在单元格文字前加空白
  4. 磨刀——python及相关工具
  5. 在Autodesk应用程序商店发布基于浏览器的Web应用程序
  6. Javascript中闭包的作用域链
  7. mysql 出现Cannot delete or update a parent row: a...
  8. 面向程序员的数据库访问性能优化法则
  9. 利用__FILE__, __LINE__, __FUNCTION__跟踪调试程序
  10. 看博客不回是小狗『博客运营随笔11.20』