一、List接口
|--:List元素是有序的,元素可以重复,因为该集合体系有索引
|--:ArrayList:底层的数据结构使用的是数组结构,特点:查询速度很快,但是增删稍慢,线程不同步
|--:LinkedList:底层使用的是链表数据结构,特点:增删速度很快,查询稍慢
|--:Vector:底层是数组数据结构,线程同步,被ArrayList替代了
/** *java.util.List *有序的 collection(也称为序列)。 *此接口的用户可以对列表中每个元素的插入位置进行精确地控制。 *用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。 *与 set 不同,列表通常允许重复的元素。 *List集合因为角标所以可以通过角标遍历集合元素,比其他集合多了一种遍历方式 */ public interface List<E> extends Collection<E> { /** * 除了从Collection继承的方法外,List有自己特有的方法 * 凡是可以操作角标的方法都是该体系特有的方法 */ //1,在列表的指定位置插入指定元素(可选操作) void add(int index, E element); //2,将指定 collection 中的所有元素都插入到列表中的指定位置(可选操作)。 boolean addAll(int index, Collection<? extends E> c); //3,返回列表中指定位置的元素。 E get(int index); //4,用指定元素替换列表中指定位置的元素(可选操作)。 E set(int index, E element); //5,返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。 int lastIndexOf(Object o); //6,返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。 int indexOf(Object o); //7,返回此列表元素的列表迭代器(按适当顺序)。 ListIterator<E> listIterator(); //8,返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。 ListIterator<E> listIterator(int index); //9,移除列表中指定位置的元素(可选操作)。 E remove(int index); //10,返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。 List<E> subList(int fromIndex, int toIndex); }
二、ListIterator列表迭代器
/** *java.util.ListIterator接口 *对 List 进行迭代的迭代器。 *系列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。 *ListIterator 没有当前元素; *它的光标位置 始终位于调用 previous() 所返回的元素和调用 next() 所返回的元素之间。 */ public interface ListIterator<E>extends Iterator<E> { //从Iterator继承的方法******************** //如果仍有元素可以迭代,则返回 true。 boolean hasNext(); //返回迭代的下一个元素。 E next(); //从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 void remove(); //特有方法******************************* //1,如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。 boolean hasPrevious(); //2,返回对 next 的后续调用所返回元素的索引。 int nextIndex(); //3,返回列表中的前一个元素 E previous(); //4,返回对 previous 的后续调用所返回元素的索引 int previousIndex(); //5,用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。 void set(E e); //6,将指定的元素插入列表(可选操作)。 void add(E e); }
三、Iterator和ListIterator的区别
- Iterator是ListIterator的父接口。
- terator是单列集合(Collection)公共取出容器中元素的方式。对于List,Set都通用。
- ListIterator是List集合的特有取出元素方式。
- Iterator中具备的功能只有hashNext(),next(),remove();
- ListIterator中具备着对被遍历的元素进行增删改查的方法,可以对元素进行逆向遍历。
- 之所以如此,是因为ListIterator遍历的元素所在的容器都有索引。
- 示例
import java.util.ArrayList; class ListDemo { public static void main(String[] args) { ArrayList al = new ArrayList(); al.add("dd"); al.add("aa"); al.add("cc"); Iterator it = al.iterator(); while(it.hasNext()) { Object obj = it.next(); if(obj == "dd") al.add("kk"); } } } /** *此示例会发生并发修改异常ConcurrentModificationException *不能同时用it和al对集合进行操作 *在迭代时,不可以通过集合对象的方法操作集合中的元素。 *在迭代器时,只能用迭代器的方法操作元素 *如果想要其他的操作如添加,修改等 *只能使用其子接口,ListIterator */
四、ArrayList集合
- ArrayList()构造一个初始容量为 10 的空列表。
- ArrayList是1.2版本出现的Vector是1.0出现的,
- ArrayList初始容量为10,当继续添加内容时,它再new一个长度为15的数组,
- 把原数组中的元素copy过去,再添加,并删除原数组,而Vector则是new一个20的,它们的初始容量都是10
- Vector特有的取出方式:枚举public Enumeration<E> elements()
- Enumeration,枚举和迭代器是一样的,因为枚举的名称以及方法的名称都过长,所以被迭代器取代了。
- Iterator是jdk1.2出现的
- Enumeration是jdk1.0出现的
/** *java.util.ArrayList */ public class ArrayList<E>extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable { //构造方法************* //构造一个初始容量为 10 的空列表 public ArrayList(){} //构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。 public ArrayList(Collection<? extends E> c){} //构造一个具有指定初始容量的空列表。 public ArrayList(int initialCapacity){} //特殊方法**************** //移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素。 protected void removeRange(int fromIndex, int toIndex){} //将此 ArrayList 实例的容量调整为列表的当前大小。 //应用程序可以使用此操作来最小化 ArrayList 实例的存储量。 void trimToSize(){} //其余方法与List一致********************************** }
五、LinkedList集合
- List 接口的链接列表实现。
- 除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。
- 这些操作允许将链接列表用作堆栈、队列或双端队列。
- 注意,此实现不是同步的
- 如果多个线程同时访问一个链接列表,而其中至少一个线程从结构上修改了该列表,则它必须 保持外部同步
- jdk1.2开始的
/** *java.util.LinkedList */ public class LinkedList<E>extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable { //构造方法************* //构造一个空列表。 public LinkedList(){} //构造一个包含指定 collection 中的元素的列表,这些元素按其 collection 的迭代器返回的顺序排列。 public LinkedList(Collection<? extends E> c){} //特殊方法**************** //将指定元素插入此列表的开头。 public void addFirst(E e){} //将指定元素添加到此列表的结尾 public void addLast(E e)(){} //返回此列表的第一个元素,不删除元素。如果集合为空,则会出现NoSuchElementException异常 public E getFirst(){} //返回此列表的最后一个元素,不删除元素。如果集合为空,则会出现NoSuchElementException异常 public E getLast(){} //移除并返回此列表的第一个元素,删除元素。如果集合为空,则会出现NoSuchElementException异常 public E removeFirst(){} //移除并返回此列表的最后一个元素,删除元素。如果集合为空,则会出现NoSuchElementException异常 public E removeLast(){} //以上方法在jdk1.6出现了替代方法 //将指定元素添加到此列表的末尾(最后一个元素)。 public boolean offer(E e){} //在此列表的开头插入指定的元素。 public boolean offerFirst(E e){} //在此列表末尾插入指定的元素。 public boolean offerLast(E e){} //获取但不移除此列表的第一个元素;如果此列表为空,则返回 null public E peekFirst(){} //获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null public E peekLast(){} //获取并移除此列表的第一个元素;如果此列表为空,则返回 null。 public E pollFirst(){} //获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。 public E pollLast(){} //其余方法与List一致********************************** }
六、Vector集合
public class Vector<E>extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable { //特有方法***************** //返回指定索引处的组件。 public E elementAt(int index){} //返回此向量的组件的枚举 public Enumeration<E> elements(){} }
java.util.Enumeration<E> //实现 Enumeration 接口的对象,它生成一系列元素,一次生成一个。 //连续调用 nextElement 方法将返回一系列的连续元素。 public interface Enumeration<E> { //测试此枚举是否包含更多的元素。 boolean hasMoreElements(); //如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。 E nextElement(); }
相关推荐
Java.util.ConcurrentModificationException 异常问题详解 ConcurrentModificationException 异常是 Java 中一个常见的异常,它发生在 Iterator 遍历集合时,集合同时被修改引起的异常。在 Java 中,集合类如 ...
1. 集合框架:Java.util包是Java集合框架的基础,包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。这些集合类为存储和操作对象提供了灵活的方式。例如,ArrayList实现了...
Java中的`java.util.List`接口是集合框架的重要组成部分,它扩展了`Collection`接口,并引入了一些特定于列表的特性,如有序性、可重复性以及对元素的索引访问。这篇博客将深入探讨`List`接口及其常用实现类,如`...
Java.util包是Java标准库中的核心包之一,它包含了大量用于日常编程的工具类和接口。这个包在Java 2版本中得到了显著增强,引入了许多重要的数据结构和算法,为Java程序员提供了更丰富的功能。 首先,Java.util包中...
Java.util包是Java标准库中的核心包之一,包含了许多用于处理集合、数组、日期时间、随机数等的类。在本文件中,我们主要关注Java.util.ArrayList类,这是一个常用的动态数组实现,它提供了灵活的大小调整和高效的...
Java.util包是Java标准库中的核心包之一,它包含了大量用于处理各种数据结构和集合的类和接口。在这个包中,我们经常会用到`Iterator`和`List`接口,这两个接口在Java编程中扮演着非常重要的角色。 首先,`Iterator...
### Java的.awt包和.java.util包的区别 #### Java.util包详解 Java.util包是一个非常重要的标准库之一,其中包含了大量有用的类和接口,为开发者提供了丰富的功能。此包中的类和接口可以分为以下几大类别: 1. **...
Java.util包是Java集合框架的基础,包括List、Set、Queue等接口以及ArrayList、LinkedList、HashSet、HashMap等实现类。List接口代表有序的元素集合,允许有重复元素,ArrayList和LinkedList是其具体实现,前者基于...
Java.util.Collection类是Java编程语言中的一个基础类库,提供了许多有用的方法来操作集合对象。Collection类包含了许多静态方法,可以对集合进行排序、混排、反转、替换等操作。 1. Overview Java.util....
从 Java 5 开始,ArrayList 和其他集合类可以指定元素的类型,例如: ```java ArrayList<String> words = new ArrayList(); List<Integer> nums = new ArrayList(); ``` 七、ArrayList 类的注意事项 ArrayList 类...
1. **集合框架**:Java的集合框架是`java.util`包的核心部分,包括List、Set、Queue和Map接口,以及它们的实现类。例如: - `ArrayList` 和 `LinkedList`:这两个类分别实现了List接口,它们分别基于动态数组和双向...
8. **`java.util.ArrayList`** 和 **`java.util.List`** 接口: 有序的元素集合,允许重复元素。`ArrayList`是基于数组实现的。 9. **`java.util.LinkedList`** 和 **`java.util.Deque`** 接口: 双向链表实现,支持...
1. **集合框架扩展**:可能包含对Java内置集合类(如List、Set、Map)的增强,提供更高效的操作,例如快速排序、线程安全的实现等。 2. **日期和时间处理**:提供更加灵活和强大的日期时间操作,弥补Java 8之前的...
3. **`java.util.Collections`**:与`Arrays`类似,但针对集合框架中的接口和类,如`List`、`Set`和`Map`,提供排序、搜索和转换功能。 4. **`java.util.Date`** 和 **`java.time`** 包:处理日期和时间,`java....
11. `java.util.Collections`:Collections类提供了静态方法来操作集合,如排序、查找和转换。 12. `java.util.Date`:Date类表示特定的瞬间,精确到毫秒。 13. `java.util.HashSet`:HashSet是基于哈希表的Set...
在Android开发中,由于兼容性的限制,有时无法直接使用Java新版本引入的特性,例如Java 9中的`java.util.stream` API。为了解决这个问题,开发者创建了`android-retrostreams`,这是一个专门针对Android平台的开源...