【Java】之 简易ArrayList
来源:互联网 发布:程序员的自我修养 git 编辑:程序博客网 时间:2024/06/06 03:27
查看ArrayList的方法们(挑选几个)
源码
package dataStructure;import java.lang.reflect.Constructor;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.regex.Pattern;/** * Created by donal on 2017/2/12. *//** * 输出方法体 * Pattern p = Pattern.compile("\\w+\\."); try{ Class<?> c = Class.forName("java.util.ArrayList"); Method[] methods = c.getMethods(); Constructor[] constructors = c.getConstructors(); for(Method method : methods){ System.out.println( p.matcher(method.toString()).replaceAll("") //去掉 包名.类名. ); } System.out.println("----------------------------------------------"); for (Constructor constructor : constructors){ System.out.println(p.matcher(constructor.toString()).replaceAll("")); } }catch (ClassNotFoundException e){ System.out.println("No such class: " + e); } */public class MyArrayList { private static final int DEFAULT_CAPACITY = 10; private static final Object[] EMPTY_ELEMENTDATA = {}; private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; transient Object[] elementData; private int size; public MyArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } public MyArrayList(int initialCapacity){ if (initialCapacity > 0) { this.elementData = new Object[initialCapacity]; } else if (initialCapacity == 0) { this.elementData = EMPTY_ELEMENTDATA; } else { throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); } } private void makeSure(int capacitySize){ if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA ){ elementData = new Object[DEFAULT_CAPACITY]; }else if (capacitySize > DEFAULT_CAPACITY){ throw new RuntimeException(); } } public boolean add(Object o){ makeSure(size + 1); elementData[size++] = o; return true; } public void add(int index, Object o){ if (index >= DEFAULT_CAPACITY) throw new RuntimeException(); makeSure(size + 1); System.arraycopy(elementData, index, elementData, index + 1, size - index); elementData[index] = o; size++; } public boolean remove(Object o){ int index = -1; for (int i = 0; i < size(); ++i){ if (elementData[i] == o){ index = i; break; } } if (index == -1) return false; else remove(index); return true; } public Object remove(int index){ if (index >= DEFAULT_CAPACITY) throw new RuntimeException(); Object oldElem = elementData[index]; System.arraycopy(elementData, index, elementData, index, size - index); elementData[size--] = null; return oldElem; } public Object get(int n){ if (n > size()) throw new RuntimeException(); return elementData[n]; } public int indexOf(Object o){ for (int i = 0; i < size(); ++i){ if (elementData[i] == o) return i; } return -1; } public void clear(){ for (int i = 0 ; i < size(); ++i) elementData[i] = null; } public boolean contains(Object o){ for (int i = 0; i < size(); ++i){ if (elementData[i] == o) return true; } return false; } public boolean isEmpty(){ if (size() == 0) return true; return false; } public int size(){ return size; } public String toString(){ StringBuilder sb = new StringBuilder(); for (int i = 0 ; i < size(); ++i){ sb.append("index : " + i + ", element : " + elementData[i] + "\n"); } return sb.toString(); } public static void main(String[] args) { MyArrayList myArrayList = new MyArrayList(5); myArrayList.add("123"); myArrayList.add("456"); myArrayList.add("789"); System.out.println(myArrayList.get(1)); System.out.println(myArrayList.size()); myArrayList.remove(2); System.out.println(myArrayList); }}
0 0
- 【Java】之 简易ArrayList
- 【java集合】自己实现简易的ArrayList
- Java学习之ArrayList
- Java学习之ArrayList
- Java集合之ArrayList
- java集合之ArrayList
- Java集合之ArrayList
- java 之ArrayList实现
- java集合之ArrayList
- java集合之arrayList
- java之封装ArrayList
- Java之ArrayList详解
- Java集合之ArrayList
- Java源码之ArrayList
- java初学之arrayList
- Java-Util之ArrayList
- java之自定义ArrayList
- JAVA源码之ArrayList
- 二、Unity Shader顶点变换总结
- 桥接模式 Bridge
- VTK7.1安装记录
- 指针与数组,指针与函数之间的关系
- MyEclipse集成开发环境配置
- 【Java】之 简易ArrayList
- 01 -【CentOS5.6_WebSphere8.5.5集群安装配置】- 安装InstalMgr
- setContentView(R.layout.xxx)出错
- 02 -【CentOS5.6_WebSphere8.5.5集群安装配置】- 安装WAS_ND_V8.5.5
- 如何使用svn
- 欢迎使用CSDN-markdown编辑器
- CSS3知识点整理(一)----基本样式
- Linux
- C++之Deque容器初学(二)