`

实现ArrayList

 
阅读更多
public class MyList {
	private transient Object[] elementData;
	private int size;
	
	public MyList(int initialCapacity) {
		elementData = new Object[initialCapacity];
	}
	public MyList() {
		this(10);
	}
	public void add(Object obj) {
		if (size == elementData.length) {
			Object[] newElementData = increase();// 扩容
			elementData = newElementData;
		}
		elementData[size++] = obj;
	}
	// 扩容方法
	public Object[] increase(){
		Object[] newElementData = new Object[(size << 1)];// 扩容到2倍
		System.arraycopy(elementData, 0, newElementData, 0,
				elementData.length);
		return newElementData;
	}
	// 删除
	public boolean remove(int i) {
		// 删除不需要考虑库容问题,把后面的索引指向下一个对象,最后一个对象清空
		if(i>=0 && i<size){
			for (int j = i; j < size; j++) {
				elementData[j] = elementData[j + 1];
			}
			size--;
			return Boolean.TRUE;
		}
		return Boolean.FALSE;
	}
	// 修改
	public boolean modify(int i,Object obj) {
		if(i>=0 && i<size){
			elementData[i]=obj;
		}
		return Boolean.FALSE;
	}
	// 获取某一个
	public Object get(int i) {
		if (i <= size) {
			return elementData[i];
		}
		return null;
	}
	public boolean isEmpty() {
		return size == 0;
	}
	public int size() {
		return size;
	}
	public static void main(String[] args) {
		MyList list = new MyList();
		list.add("1");
		list.add("2");
		list.add("3");
		list.add("4");
		list.add("5");
		list.add("6");
		list.add("7");
		list.add("8");
		list.add("9");
		list.add("10");
		list.add("11");
		list.add("12");
		list.add("13");
		list.remove(1);
		//list.modify(11, 88);// 最后一个改为88
		for (int j = 0; j < list.size; j++) {
			System.out.println(list.get(j));
		}
		System.out.println(list.get(1000));
	}
}

 删除方法用了最原始的方式,并没有用System.arraycopy,其实是一样的

分享到:
评论

相关推荐

    浅析ArrayList内部实现

    浅析ArrayList内部实现 ArrayList是Java集合框架中的一种常用数据结构,能够存储任意多个对象,并且可以自由扩展,弥补了数组的定长的缺陷。下面我们将深入探讨ArrayList的内部实现机理。 ArrayList的内部实现机理...

    ArrayList的一个C++类模板实现

    不过,根据标题和描述,这里我们讨论的是一个用C++实现的ArrayList类模板,它采用了双层散列技术来提高性能。这个实现旨在提供高效的数据存储和操作,特别是在处理大量数据时。 首先,让我们深入了解ArrayList的...

    java实现ArrayList根据存储对象排序功能示例

    java实现ArrayList根据存储对象排序功能示例 java实现ArrayList根据存储对象排序功能示例主要介绍了java中ArrayList的排序功能,通过构建新的比较对象Comparator实现排序操作。本文将详细讲解java中ArrayList的相关...

    js实现ArrayList功能附实例代码

    以下是对如何使用JavaScript实现ArrayList功能的深入探讨,包括相关方法的介绍和一个简单的实例代码。 首先,我们需要理解ArrayList的核心概念。ArrayList是一个可以动态调整大小的数组,它允许我们以特定的顺序...

    自定义ArrayList实现

    自己写的ArrayList,请勿喷!

    用C语言模拟ArrayList

    下面,我们将深入探讨如何用C语言实现ArrayList及其相关的知识点。 首先,`Array.c`文件通常会包含ArrayList的核心实现,包括数据结构定义、初始化、添加元素、删除元素、查找元素等函数。在C语言中,我们可以通过...

    C++ArrayList

    下面将详细介绍C++实现ArrayList类的关键知识点。 首先,`ArrayList`的核心是动态内存管理。在C++中,我们通常使用`new`运算符来动态分配内存,创建一个可变大小的数组。为了方便管理和释放内存,我们还需要使用`...

    简单实现arraylist

    面试遇到的一个小的提问,回答的不是很好,自己回来又写了个

    Android ArrayList关键字查询.rar

    本文将深入探讨如何在Android中实现ArrayList关键字查询,并与ListView结合,提供高效且用户友好的搜索功能。 首先,ArrayList是一个动态数组,它允许存储一组有序的元素。在Android中,我们通常用它来存储自定义...

    ArrayList,LinkList链表接口实现.zip

    在Eclipse中实现ArrayList和LinkedList,首先需要导入相应的Java集合库,如`import java.util.ArrayList;`和`import java.util.LinkedList;`。接着,可以创建ArrayList或LinkedList对象,添加、删除元素,以及进行...

    ArrayList的线程安全测试

    在C#中,实现ArrayList的线程安全可以通过以下几种方式: 1. 使用`lock`关键字:在访问ArrayList的方法或循环中,可以包裹在`lock`语句块内,确保同一时间只有一个线程能执行该代码。例如: ```csharp private ...

    Java使用数组实现ArrayList的动态扩容的方法

    "Java使用数组实现ArrayList的动态扩容的方法" Java中的ArrayList是使用数组实现的,但是数组有一个缺点,就是在创建时就确定了长度,之后就不能更改长度。因此,Java官方提供了ArrayList这个可变长的容器。...

    数组模仿ArrayList

    此外,我们还需要提供修改元素的`set(int index, T element)`、获取元素数量的`size()`、清空列表的`clear()`等方法,以实现ArrayList的基本功能。 ```java public T set(int index, T element) { rangeCheck...

    模拟arraylist底层实现

    模拟ArrayList底层实现 在Java中,ArrayList是一种常用的集合类,提供了许多实用的方法来操作集合数据,而本文则尝试模拟ArrayList的底层实现,通过自定义集合实现类MyArrayList,来实现基本的集合操作。 模拟...

    ArrayList的实现原理

    ArrayList是Java集合框架中常用的动态数组,它是List接口的一个实现,允许存储包括null在内的所有元素。ArrayList的主要特点是通过数组来存储元素,提供了丰富的操作方法,包括添加、删除、修改和查询等。下面是...

    自定义实现的ArrayList

    自定义实现的ArrayList数据结构,有大量注释以及编写思路,帮助新手用Java语言来实现数据结构

    用java自己实现的arrayList

    用java自己实现的arrayList,比较详细,有助于初学者理解arrayList的基本概念和基础用法

    ArrayList删改查方法.pdf

    ArrayList是Java编程语言中常用的动态数组,它实现了List接口,提供了丰富的操作方法,适用于需要频繁进行增删改查操作的场景。以下将详细介绍ArrayList的“删改查”方法及其内部原理。 1. 获取元素(Get) ...

    JavaScript 实现基础 ArrayList 功能

    虽然JavaScript原生不支持ArrayList,但我们可以利用数组(Array)对象来实现类似的功能。下面将详细介绍如何使用JavaScript来实现基础的ArrayList功能,并探讨在没有参数重载(overload)的情况下如何处理方法的...

Global site tag (gtag.js) - Google Analytics