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集合框架可以極大地簡化代碼,提高代碼的可讀性和可維護性。同時,集合框架也提供了很多現成的算法和數據結構,使得你可以更加專注于業務邏輯的實現。