59_数组_模拟ArrayList容器的底层实现_JDK源码分析ArrayList
来源:互联网 发布:选择排序和冒泡算法 编辑:程序博客网 时间:2024/05/16 13:05
import java.util.ArrayList;public class MyArrayList { private Object value[]; private int size; public MyArrayList() { // value = new Object[16]; this(2); } public MyArrayList(int size) { value = new Object[size]; } public void add(Object obj) { value[size] = obj; size++; if (size >= value.length) { // 装不下了,将要扩展容量了 int newCapacity = value.length * 2; Object[] newList = new Object[newCapacity]; // System.arraycopy(src, srcPos, dest, destPos, length); for (int i = 0; i < value.length; i++) { newList[i] = value[i]; } value = newList; } } public int size() { return size; } public boolean isEmpty() { return size == 0; } public int indexOf(Object obj) { if (obj == null) { return -1; } else { for (int i = 0; i < value.length; i++) { if (obj == value[i]) { return i; } } return -1; } } public int lastIndexOf(Object obj) { if (obj == null) { return -1; } else { for (int i = value.length - 1; i >= 0; i--) { if (obj == value[i]) { return i; } } return -1;// return 作用:1,返回出去值,2,结束语句。 } } public void rangleCheck(int index) { if (index < 0 || index > size - 1) {// [0,size-1] try { throw new Exception(); } catch (Exception e) { e.printStackTrace(); } } } public Object set(int index, Object object) { rangleCheck(index); Object old = value[index]; value[index] = object; return old; } public Object get(int index) { rangleCheck(index); return value[index]; } public static void main(String[] args) { MyArrayList list = new MyArrayList(); list.add("aaa"); list.add(new Human("高淇")); list.add("bbb"); list.add("bbb"); list.add("bbb"); list.add("bbb"); Human h = (Human) list.get(1); System.out.println(h.getName()); System.out.println("*********************"); System.out.println(list.get(0)); System.out.println(list.get(1)); System.out.println(list.get(2)); System.out.println("*******************"); System.out.println(list.size); }}class Human { private String name; public Human(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
阅读全文
0 0
- 59_数组_模拟ArrayList容器的底层实现_JDK源码分析ArrayList
- java学习之旅59--模拟ArrayList容器的底层实现_JDK源码分析ArrayList
- 数组第二十四课,模拟ArrayList容器的底层实现,JDK源码分析
- 101-102_容器_JDK源代码分析_自己实现ArrayList
- 54-55_数组_String类的常用方法_JDK源码分析_内存分析
- 模拟ArrayList底层实现
- 56-58_数组_StringBuilder和StringBuffer_常用方法_方法链的实现_JDK源码分析_常见面试题
- java学习之旅56--数组_StringBuilder和StringBuffer的使用_常用方法_方法链的实现_JDK源码分析
- 103-104_容器_JDK源代码分析_自己实现LinkedList
- ArrayList底层实现源码解析
- ArrayList底层实现源码解读
- 容器第三课,JDK源码分析,自己实现ArrayList数组扩容
- 集合第一步:模拟ArrayList底层实现
- 自己编码模拟实现ArrayList底层代码
- Java ArrayList的底层实现
- ArrayList的底层实现原理
- ArrayList的源码分析
- ArrayList 的源码分析
- Android Studio jni开发入门——看我就够了!
- linux
- Skyline TerraExplorer 7.0- 扩展信息树
- sql笔记
- tomcat bio nio apr 模式 ---待自己整理
- 59_数组_模拟ArrayList容器的底层实现_JDK源码分析ArrayList
- [RK3288][Android6.0] Audio中的单声道到双声道的转换处理过程
- EAS 供应链,业务类型相关
- 【HTTP header】【Content-disposition 内容部署】
- MySQL锁系列(三)之 redo log
- Packet for query is too large (30697 > 1024)解决方案
- Kotlin Reference (七) feature: Range
- 转载-CSS导航菜单水平居中实例
- 编译caffe提示错误/usr/bin/ld: cannot find -lhdf5_hl