一天一个类--ArrayList之一

今天开始打算将JDK7种的一些类的源码分析一下,笔者认为了解源码就是了解其实现过程,这是非常重要的,而不是简单的记住方法的使用,关键是了解其思想和目的这才是重要的。所以笔者决定首先将从一些容器下手。【好欺负^_^】

位于顶层的是Collection,这个是一个接口,就是“祖宗”啊~

具体介绍可以参见API

常见的方法:

boolean add(E e)

Ensures that this collection contains the specified element (optional operation).

boolean addAll(Collection<? extends E> c)

Adds all of the elements in the specified collection to this collection (optional operation).

使用泛型,一次性加入所有元素

void clear()

Removes all of the elements from this collection (optional operation).

boolean contains(Object o)

Returns true if this collection contains the specified element.

boolean containsAll(Collection<?> c)

Returns true if this collection contains all of the elements in the specified collection.

boolean equals(Object o)

Compares the specified object with this collection for equality.

int hashCode()

Returns the hash code value for this collection.

boolean isEmpty()

Returns true if this collection contains no elements.

Iterator<E> iterator()

Returns an iterator over the elements in this collection.

boolean remove(Object o)

Removes a single instance of the specified element from this collection, if it is present (optional operation).

boolean removeAll(Collection<?> c)

Removes all of this collection‘s elements that are also contained in the specified collection (optional operation).

boolean retainAll(Collection<?> c)

Retains only the elements in this collection that are contained in the specified collection (optional operation).

int size()

Returns the number of elements in this collection.

Object[] toArray()

Returns an array containing all of the elements in this collection.

<T> T[] toArray(T[] a)

Returns an array containing all of the elements in this collection; the runtime type of the returned array is that of the specified array.

由于Collection是个接口,其中的方法尚未实现,所以没什么可以赘述的。

接下来看看他的子接口没有什么特别的地方,

http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4

public interface List<E>
extends Collection<E>

An ordered collection (also known as a sequence). The user of this interface has precise control over where in the list each element is inserted. The user can access elements by their integer index (position in the list), and search for elements in the list.

这是一个有序的集合(或者序列),在插入元素的时候,受到严格的控制,同时呢,可以使用下标来访问元素。

The List interface provides four methods for positional (indexed) access to list elements。提供四个通过下表(从0开始)访问元素的方法。

同时,还提供了迭代器,来实现对元素的操作。

The List interface provides two methods to search for a specified object。还提供2方法实现对象的查找。

The List interface provides two methods to efficiently insert and remove multiple elements at an arbitrary point in the list. 两个有效的插入删除的方法。

Methods 
Modifier and Type Method and Description
boolean add(E e)

Appends the specified element to the end of this list (optional operation).

void add(int index, E element)

Inserts the specified element at the specified position in this list (optional operation).

boolean addAll(Collection<? extends E> c)

Appends all of the elements in the specified collection to the end of this list, in the order that they are returned by the specified collection‘s iterator (optional operation).

boolean addAll(int index, Collection<? extends E> c)

Inserts all of the elements in the specified collection into this list at the specified position (optional operation).

void clear()

Removes all of the elements from this list (optional operation).

boolean contains(Object o)

Returns true if this list contains the specified element.

boolean containsAll(Collection<?> c)

Returns true if this list contains all of the elements of the specified collection.

boolean equals(Object o)

Compares the specified object with this list for equality.

E get(int index)

Returns the element at the specified position in this list.

int hashCode()

Returns the hash code value for this list.

int indexOf(Object o)

Returns the index of the first occurrence of the specified element in this list, or -1 if this list does not contain the element.

返回元素下标

boolean isEmpty()

Returns true if this list contains no elements.

Iterator<E> iterator()

Returns an iterator over the elements in this list in proper sequence.

int lastIndexOf(Object o)

Returns the index of the last occurrence of the specified element in this list, or -1 if this list does not contain the element.

返回最后一个存在的元素下标,不存在的话,返回-1

ListIterator<E> listIterator()

Returns a list iterator over the elements in this list (in proper sequence).

ListIterator<E> listIterator(int index)

Returns a list iterator over the elements in this list (in proper sequence), starting at the specified position in the list.

E remove(int index)

Removes the element at the specified position in this list (optional operation).

boolean remove(Object o)

Removes the first occurrence of the specified element from this list, if it is present (optional operation).

boolean removeAll(Collection<?> c)

Removes from this list all of its elements that are contained in the specified collection (optional operation).

boolean retainAll(Collection<?> c)

Retains only the elements in this list that are contained in the specified collection (optional operation).

E set(int index, E element)

Replaces the element at the specified position in this list with the specified element (optional operation).、

实现按照元素位置的替换。

int size()

Returns the number of elements in this list.

List<E> subList(int fromIndex, int toIndex)

Returns a view of the portion of this list between the specified fromIndex, inclusive, and toIndex, exclusive.

按照起始位置,返回子列表

Object[] toArray()

Returns an array containing all of the elements in this list in proper sequence (from first to last element).

<T> T[] toArray(T[] a)

Returns an array containing all of the elements in this list in proper sequence (from first to last element); the runtime type of the returned array is that of the specified array.

上面这个颜色的表示List他爸爸没有的方法。

  技巧:我们没有找到如何实现指定区间来删除元素,咋个办呢?感谢API 给我们提供了一个好的方式。

  list.subList(from,to).clear();             bingo.完成任务~~~

【ArrayList】 第一个实现类

他下实现的接口不少

【惊天大秘密】 他可以加入null. 当然加入null之后,元素个数要+1的。

还有,这个实现不是线程安全的。但是API还说了一种实现了线程安全的方式:List list = Collections.synchronizedList(new ArrayList(...)); 【其实,不止这一个同步,还有set,map】

接下来,我们就要真正看看ArrayList里一个重要方法的源码了。

想想就有点小激动~~~~

时间: 2024-10-29 10:46:15

一天一个类--ArrayList之一的相关文章

一天一个类--ArrayList之二

继续我的小激动--- 1.看看构造一个ArrayList 有两种方式 一个指定大小,一个不指定.我们知道他其实使用数组来实现了,数组肯定要有大小,那么他没指定大小,默认的是多少呢???追踪源码---开启万里追踪模式--- /** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() { this(10); } 知道了,就是10--. 2.还有一个通过现有的集合类来实现构造.怎么实现的啊?

java学习笔记--类ArrayList和LinkedList的实现

在集合Collection下的List中有两个实现使用的很频繁,一个是ArrayList,另一个是LinkedList,在学习中肯定都会有这样的疑问:什么时候适合使用ArrayList,什么时候用LinkedList?这时,我们就需要了解ArrayList和LinkedList的底层的实现,下面,为了更好的了解它们具体是怎样实现的,我们来写自己的ArrayList 和LinkedList. ArrayList底层是基于数组实现的,数组在内存中是存储在连续的存储单元中,在数据查找的时候比较快,适用

JavaSE入门学习35:Java集合框架之List接口及其实现类ArrayList和LinkedList

一List接口概述 List接口是Collection接口的子接口,实现List接口的集合类中的元素是有顺序的,而且可以重复,被称为序列. List集合中的元素都对应一个整数型的序列容器中的序号记载其在容器中的位置,可以根据序号存取容器中的元 素.List接口可以精确的控制每个元素的插入位置,或者删除某个位置元素. Java所提供的List集合实现类类有ArrayList实现类.LinkedList实现类.Vector等,我们主要使用的是ArrayList实 现类和LinkedList实现类.

java的List接口的实现类 ArrayList,LinkedList,Vector 的区别

Java的List接口有3个实现类,分别是ArrayList.LinkedList.Vector,他们用于存放多个元素,维护元素的次序,而且允许元素重复. 3个具体实现类的区别如下: 1. ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制.移动.代价比较高.因此,它

Random类&amp;ArrayList集合学习

基础题目 第一题:需求实现 随机验证码. 随机生成十组六位字符组成的验证码. 验证码由大小写字母.数字字符组成. 代码实现,效果如图所示: 开发提示: 使用字符数组保存原始字符,利用Random类生成随机索引. 参考答案: public class Test1 { public static void main(String[] args) { for (int i = 0; i < 10; i++) { String s = verifyCode(); System.out.println(&qu

类ArrayList

什么是ArrayList类 java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素.此类提供一些方法来操作内部存储 的元素. ArrayList 中可不断添加元素,其大小也自动增长. ArrayList使用步骤 查看类 java.util.ArrayList<E> :该类需要 import导入使后使用. <E>,表示一种指定的数据类型,叫做泛型. E ,取自Element(元素)的首字母.在出现 E 的地方,我们使用一种引用数据类型将其替换即可. 查

类ArrayList(集合)

ArrayList类简介 java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素.此类提供一些方法来操作内部存储的元素. ArrayList 中可不断添加元素,其大小也自动增长.ArrayList对象不能存储基本类型,只能存储引用类型的数据. ArrayList使用步骤 查看类 java.util.ArrayList<E> :该类需要 import导入使后使用. <E>,表示一种指定的数据类型,叫做泛型. E ,取自Element(元素)的首字母.在

list 接口与实现类arraylist 区别

ArrayList list = new ArrayList(); List<String> list = new ArrayList<String>(); 第一种形式用当前类作为引用类型,那么可以访问到ArrayList这个类中的所有公用方法.第二种形式,用ArrayList实现的接口List作为引用类型,那么通过list引用可以访问到接口中定义的方法.也就是说ArrayList这个类实现了List接口,除了要必须实现接口List中声明的方法外,还可以实现额外的一些方法.但是,第

一天一个类--NIO 之Buffer

java.nio  --- 定义了 Buffer 及其数据类型相关的子类.其中被 java.nio.channels 中的类用来进行 IO 操作的 ByteBuffer 的作用非常重要. java.nio.channels----定义了一系列处理 IO 的 Channel 接口以及这些接口在文件系统和网络通讯上的实现.通过 Selector 这个类,还提供了进行非阻塞 IO 操作的办法.这个包可以说是 NIO API 的核心. java.nio.channels.spi----定义了可用来实现