ArrayList
是 Java 集合框架(Java Collections Framework)中的一个重要类,它实现了 List
接口,并提供了动态数组的功能。以下是 ArrayList
上的一些常用方法:
-
构造方法:
ArrayList<E>()
: 构造一个空的ArrayList
。ArrayList<E>(Collection<? extends E> c)
: 构造一个包含指定集合的元素的ArrayList
。
-
添加元素:
boolean add(E e)
: 将指定的元素添加到此列表的末尾。void add(int index, E element)
: 在此列表的指定位置插入指定的元素。boolean addAll(Collection<? extends E> c)
: 将指定集合中的所有元素添加到此列表的末尾。boolean addAll(int index, Collection<? extends E> c)
: 将指定集合中的所有元素插入到此列表中的指定位置。
-
删除元素:
void clear()
: 从列表中移除所有元素。E remove(int index)
: 移除列表中指定位置的元素。boolean remove(Object o)
: 从列表中移除首次出现的指定元素(如果存在)。boolean removeAll(Collection<?> c)
: 从列表中移除指定集合中包含的所有元素(只保留此列表中未包含在指定集合中的元素)。boolean retainAll(Collection<?> c)
: 仅保留此列表中指定集合中也包含的元素(从此列表中移除未包含在指定集合中的所有元素)。
-
获取元素:
E get(int index)
: 返回列表中指定位置的元素。int indexOf(Object o)
: 返回此列表中首次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。int lastIndexOf(Object o)
: 返回此列表中最后出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。List<E> subList(int fromIndex, int toIndex)
: 返回列表中指定的 fromIndex(包括)和 toIndex(不包括)之间的部分视图。
-
修改元素:
E set(int index, E element)
: 用指定的元素替换此列表中指定位置的元素。
-
检查元素:
boolean contains(Object o)
: 如果此列表包含指定的元素,则返回 true。boolean isEmpty()
: 如果此列表不包含元素,则返回 true。
-
列表大小:
int size()
: 返回此列表中的元素数。
-
遍历列表:
通常使用 for-each 循环(也称为增强型 for 循环)或迭代器(Iterator
)来遍历ArrayList
中的元素。 -
转换为数组:
Object[] toArray()
: 返回一个包含此列表中所有元素的数组。<T> T[] toArray(T[] a)
: 返回一个包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型 T 的数组类型。
注意:上述方法中的 E
是类型参数,表示列表中元素的类型。在实际使用中,你需要用具体的类型(如 String
、Integer
等)来替换它。
// 创建一个String类型的hashset
HashSet<String> set = new HashSet<>();
在Java中,集合(Collections)是一个非常重要的概念,它允许你存储和操作对象的集合,而无需关心这些对象的具体实现。Java集合框架(Java Collections Framework)提供了一套用于表示和操作集合的统一架构。
Java集合框架主要包含以下几个接口和类:
- Collection接口:
- 是集合层次结构中的根接口。
- 它定义了集合的基本操作,如添加、删除、查找等。
- List接口:
- 继承自Collection接口。
- 它是有序的集合(也称为序列),允许包含重复的元素。
- 常用的实现类有ArrayList、LinkedList和Vector。
-
ArrayList 是 List 接口的一种实现,它是使用数组来实现的。
LinkedList 是 List 接口的一种实现,它是使用链表来实现的。
ArrayList 遍历和查找元素比较快。LinkedList 遍历和查找元素比较慢。
ArrayList 添加、删除元素比较慢。LinkedList 添加、删除元素比较快。
- Set接口:
- 继承自Collection接口。
- 它不包含重复的元素。
- 常用的实现类有HashSet、LinkedHashSet和TreeSet。
- Queue接口:
- 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。
- 常用的实现类有LinkedList、PriorityQueue等。
- Deque接口(双端队列):
- 是一个具有队列和栈的性质的线性表。
- 可以在两端插入和删除元素。
- 常用的实现类有ArrayDeque和LinkedList。
- Map接口:
- 它将唯一的键映射到值。
- Map中不允许存在重复的键,但每个键可以映射到多个值(在MultiMap中)。
- 常用的实现类有HashMap、LinkedHashMap、TreeMap和Hashtable。
- 迭代器(Iterator):
- 迭代器模式使得能够顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。
- 通过迭代器,你可以遍历集合中的元素,而无需了解集合的具体实现。
- Collections类:
- 它是一个工具类,提供了许多静态方法,用于对集合进行排序、搜索、线程安全化等操作。
使用Java集合框架可以极大地简化代码,提高代码的可读性和可维护性。同时,集合框架也提供了很多现成的算法和数据结构,使得你可以更加专注于业务逻辑的实现。