数据结构(Java ArrayList模拟)本代码重在学习数据结构思路,代码完整性欠缺,请见谅
2012-04-01 20:37
435 查看
ArrayList的核心是以动态数组为存储结构。
class ArrayList<T>{
private int capability ;
private static final int defaultCapability = 8;
private int size = 0;
private Object[] array = null;
public ArrayList(final int n){
this.capability = n;
this.array = new Object[capability];
}
public ArrayList(){
this.capability = defaultCapability;
this.array = new Object[capability];
}
//添加数据
public void add(T data){
Object obj = (Object)data;
resizeArray();
array[size] = data;
size++;
}
public int size(){
return size;
}
public T get(int index){
if( index < 0 || index >= size)
return null;
return (T)array[index];
}
public T remove(int index){
T t = get(index);
if( t != null ){
for(int i = index; i < size-1; i++){
array[i] = array[i+1];
}
size --;
}
return t;
}
//当数据量为总容量的75%时重新设置数组的大小
private void resizeArray(){
if(size*4 > capability*3 ){
capability = capability *2;
Object[] result = new Object[capability];
System.arraycopy(array, 0, result, 0, size);
array = result;
}
}
}
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> arrays = new ArrayList<String>();
arrays.add("123");
arrays.add("124");
arrays.add("125");
arrays.remove(1);
//System.out.println(arrays.get(4));
for(int i =0 ;i< arrays.size(); i++)
System.out.println(arrays.get(i));
}
}
class ArrayList<T>{
private int capability ;
private static final int defaultCapability = 8;
private int size = 0;
private Object[] array = null;
public ArrayList(final int n){
this.capability = n;
this.array = new Object[capability];
}
public ArrayList(){
this.capability = defaultCapability;
this.array = new Object[capability];
}
//添加数据
public void add(T data){
Object obj = (Object)data;
resizeArray();
array[size] = data;
size++;
}
public int size(){
return size;
}
public T get(int index){
if( index < 0 || index >= size)
return null;
return (T)array[index];
}
public T remove(int index){
T t = get(index);
if( t != null ){
for(int i = index; i < size-1; i++){
array[i] = array[i+1];
}
size --;
}
return t;
}
//当数据量为总容量的75%时重新设置数组的大小
private void resizeArray(){
if(size*4 > capability*3 ){
capability = capability *2;
Object[] result = new Object[capability];
System.arraycopy(array, 0, result, 0, size);
array = result;
}
}
}
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> arrays = new ArrayList<String>();
arrays.add("123");
arrays.add("124");
arrays.add("125");
arrays.remove(1);
//System.out.println(arrays.get(4));
for(int i =0 ;i< arrays.size(); i++)
System.out.println(arrays.get(i));
}
}
相关文章推荐
- 数据结构(Java 二叉树模拟)本代码重在学习数据结构思路,代码完整性欠缺,请见谅
- 数据结构(Java LinkedList模拟)本代码重在学习数据结构思路,代码完整性欠缺,请见谅
- 数据结构(Java 二分法查找模拟)本代码重在学习数据结构思路,代码完整性欠缺,请见谅
- 数据结构(Java 快速排序模拟)本代码重在学习数据结构思路,代码完整性欠缺,请见谅
- 数据结构(Java 插入排序模拟)本代码重在学习数据结构思路,代码完整性欠缺,请见谅
- 数据结构(Java 队列模拟)本代码重在学习数据结构思路,代码完整性欠缺,请见谅
- 【Java数据结构学习笔记之一】线性表的存储结构及其代码实现
- JAVA学习笔记29——模拟实现ArrayList
- 【Java学习】使用LinkedList 模拟一个堆栈或者队列数据结构
- Java基础课程学习总结,使用LinkedList简单模拟队列数据结构和堆栈数据结构的实现
- Android(java)学习笔记66:线程的实现方案2思路以及代码实现
- java学习之旅59--模拟ArrayList容器的底层实现_JDK源码分析ArrayList
- Java源码集合类TreeMap学习1——数据结构3二叉树创建代码
- 百练2815---城堡问题 数据结构初学小鲜肉 思路代码分享
- 一步步学习数据结构和算法之快速排序效率分析及java实现
- JVM学习笔记(二)------Java代码编译和执行的整个过程
- Java中常见数据结构List之ArrayList
- Java源码集合类TreeMap学习1——数据结构4平衡二叉树创建代码
- JAVA学习代码——单例模式
- JAVA学习代码——循环的退出方法