更新時間:2022-09-13 09:42:35 來源:動力節(jié)點 瀏覽1123次
Collections類是Java Collections Framework中的實用程序類之一。java.util包包含 Collections 類。Collections 類基本上與對集合進(jìn)行操作或返回集合的靜態(tài)方法一起使用。如果傳遞給方法的集合或?qū)ο鬄榭?,則此類的所有方法都會拋出NullPointerException 。
語法:聲明
公共類集合
擴(kuò)展對象
集合類基本上包含下面列出的 3 個字段,可用于返回不可變實體。
EMPTY_LIST 獲取不可變的空列表
EMPTY_SET 獲取不可變的空集
EMPTY_MAP 獲取不可變的空 Map
現(xiàn)在讓我們討論一下這個類中存在的方法,以便我們稍后可以在程序中使用這些內(nèi)置功能。以下是以表格格式列出的方法,如下所示:
方法 | 描述 |
---|---|
addAll(Collection<? super T> c, T... 元素) | 它用于將指定的集合元素插入到指定的集合中。 |
asLifoQueue?(Deque<T> deque) | 此方法將 Deque 的視圖返回為后進(jìn)先出 (Lifo) 隊列。 |
binarySearch(List<? extends Comparable> list, T key) | 此方法使用指定列表中的二進(jìn)制搜索來搜索鍵。 |
binarySearch?(List<? extends T> list, T key, Comparator<? super T> c) | 此方法使用二進(jìn)制搜索算法在指定列表中搜索指定對象。 |
checkedCollection?(Collection<E> c, Class<E> 類型) | 此方法返回指定集合的??動態(tài)類型安全視圖。 |
checkedList?(List<E> 列表,Class<E> 類型) | 此方法返回指定列表的動態(tài)類型安全視圖。 |
checkedMap?(Map<K,?V> m, Class<K> keyType, Class<V> valueType) | 此方法返回指定映射的動態(tài)類型安全視圖。 |
checkedNavigableMap?(NavigableMap<K,?V> m, Class<K> keyType, Class<V> valueType) | 此方法返回指定可導(dǎo)航地圖的動態(tài)類型安全視圖。 |
checkedNavigableSet?(NavigableSet<E> s, Class<E> 類型) | 此方法返回指定可導(dǎo)航集的動態(tài)類型安全視圖。 |
checkedQueue?(Queue<E> 隊列,Class<E> 類型) | 此方法返回指定隊列的動態(tài)類型安全視圖。 |
checkedSet?(Set<E> s, Class<E> 類型) | 此方法返回指定集合的??動態(tài)類型安全視圖。 |
checkedSortedMap?(SortedMap<K,?V> m, Class<K> keyType, Class<V> valueType) | 此方法返回指定排序映射的動態(tài)類型安全視圖。 |
checkedSortedSet?(SortedSet<E> s, Class<E> 類型) | 此方法返回指定排序集的動態(tài)類型安全視圖。 |
復(fù)制?(List<? super T> dest, List<? extends T> src) | 此方法將一個列表中的所有元素復(fù)制到另一個列表中。 |
不相交?(Collection<?> c1, Collection<?> c2) | 如果兩個指定的集合沒有共同的元素,則此方法返回 true。 |
空枚舉() | 此方法返回一個沒有元素的枚舉。 |
空迭代器() | 此方法返回一個沒有元素的迭代器。 |
空列表() | 此方法返回一個空列表(不可變)。 |
空列表迭代器() | 此方法返回一個沒有元素的列表迭代器。 |
空地圖() | 此方法返回一個空映射(不可變)。 |
空導(dǎo)航地圖() | 此方法返回一個空的可導(dǎo)航地圖(不可變)。 |
空導(dǎo)航集() | 此方法返回一個空的可導(dǎo)航集(不可變)。 |
空集() | 此方法返回一個空集(不可變)。 |
空排序映射() | 此方法返回一個空的排序映射(不可變)。 |
空排序集() | 此方法返回一個空的排序集(不可變)。 |
枚舉?(Collection<T> c) | 此方法返回對指定集合的??枚舉。 |
fill?(List<?super T> list, T obj) | 此方法用指定元素替換指定列表的所有元素。 |
頻率?(Collection<?> c, Object o) | 此方法返回指定集合中等于指定對象的元素數(shù)。 |
indexOfSubList?(List<?> source, List<?> target) | 此方法返回指定目標(biāo)列表在指定源列表中第一次出現(xiàn)的起始位置,如果沒有出現(xiàn),則返回 -1。 |
lastIndexOfSubList?(List<?> source, List<?> target) | 此方法返回指定源列表中指定目標(biāo)列表的最后一次出現(xiàn)的起始位置,如果沒有這樣的出現(xiàn),則返回 -1。 |
列表?(枚舉<T> e) | 此方法返回一個數(shù)組列表,其中包含指定枚舉返回的元素,這些元素按枚舉返回的順序排列。 |
max?(Collection<? extends T> coll) | 此方法根據(jù)元素的自然順序返回給定集合的最大元素。 |
max?(Collection<? extends T> coll, Comparator<? super T> comp) | 此方法根據(jù)指定比較器引入的順序返回給定集合的最大元素。 |
min?(Collection<? extends T> coll) | 此方法根據(jù)元素的自然順序返回給定集合的最小元素。 |
min?(Collection<? extends T> coll, Comparator<? super T> comp) | 此方法根據(jù)指定比較器誘導(dǎo)的順序返回給定集合的最小元素。 |
nCopies?(int n, T o) | 此方法返回一個由指定對象的 n 個副本組成的不可變列表。 |
newSetFromMap?(Map<E,?Boolean> map) | 此方法返回由指定映射支持的集合。 |
replaceAll?(List<T> list, T oldVal, T newVal) | 此方法將列表中一個指定值的所有出現(xiàn)替換為另一個。 |
反向?(列表<?>列表) | 此方法反轉(zhuǎn)指定列表中元素的順序 |
相反的順序() | 此方法返回一個比較器,該比較器將自然順序的反向強(qiáng)加于實現(xiàn) Comparable 接口的對象集合。 |
reverseOrder?(Comparator<T> cmp) | 此方法返回一個比較器,該比較器強(qiáng)制指定比較器的反向排序。 |
旋轉(zhuǎn)?(List<?> list, int distance) | 此方法將指定列表中的元素旋轉(zhuǎn)指定距離。 |
洗牌?(列表<?>列表) | 此方法使用默認(rèn)隨機(jī)源隨機(jī)排列指定列表。 |
shuffle?(List<?> list, Random rnd) | 此方法使用指定的隨機(jī)源隨機(jī)排列指定的列表。 |
singletonMap?(K key, V value) | 此方法返回一個不可變映射,僅將指定鍵映射到指定值。 |
單例(T o) | 此方法返回一個只包含指定對象的不可變集合。 |
單例列表?(T o) | 此方法返回一個僅包含指定對象的不可變列表。 |
排序(列表<T>列表) | 此方法根據(jù)其元素的自然順序?qū)χ付斜磉M(jìn)行升序排序。 |
sort?(List<T> list, Comparator<? super T> c) | 此方法根據(jù)指定比較器產(chǎn)生的順序?qū)χ付斜磉M(jìn)行排序。 |
交換?(List<?> list, int i, int j) | 此方法交換指定列表中指定位置的元素。 |
synchronizedCollection?(Collection<T> c) | 此方法返回由指定集合支持的同步(線程安全)集合。 |
同步列表?(List<T> 列表) | 此方法返回由指定列表支持的同步(線程安全)列表。 |
synchronizedMap?(Map<K,?V> m) | 此方法返回由指定映射支持的同步(線程安全)映射。 |
synchronizedNavigableMap?(NavigableMap<K,?V> m) | 此方法返回由指定可導(dǎo)航地圖支持的同步(線程安全)可導(dǎo)航地圖。 |
synchronizedNavigableSet?(NavigableSet<T> s) | 此方法返回由指定導(dǎo)航集支持的同步(線程安全)導(dǎo)航集。 |
同步集?(Set<T> s) | 此方法返回由指定集支持的同步(線程安全)集。 |
synchronizedSortedMap?(SortedMap<K,?V> m) | 此方法返回由指定排序映射支持的同步(線程安全)排序映射。 |
synchronizedSortedSet?(SortedSet<T> s) | 此方法返回由指定排序集支持的同步(線程安全)排序集。 |
unmodifiableCollection?(Collection<? extends T> c) | 此方法返回指定集合的??不可修改視圖。 |
unmodifiableList?(List<? extends T> list) | 此方法返回指定列表的不可修改視圖。 |
unmodifiableNavigableMap?(NavigableMap<K,?? extends V> m) | 此方法返回指定導(dǎo)航地圖的不可修改視圖。 |
unmodifiableNavigableSet?(NavigableSet<T> s) | 此方法返回指定導(dǎo)航集的不可修改視圖。 |
unmodifiableSet?(Set<? extends T> s) | 此方法返回指定集合的??不可修改視圖。 |
unmodifiableSortedMap?(SortedMap<K,?? extends V> m) | 此方法返回指定排序地圖的不可修改視圖。 |
不可修改的SortedSet?(SortedSet<T> s) | 此方法返回指定排序集的不可修改視圖。 |
現(xiàn)在,我們已經(jīng)完成了所有方法的列出,所以現(xiàn)在我們有一個微弱的暗示,我們可以了解這些方法在考慮全局編程視角時的重要性。編寫優(yōu)化代碼時重要且經(jīng)常使用的方法,因為在 java 中嚴(yán)重使用 Collections 類,您會在幾乎每個 java 優(yōu)化代碼中看到這些方法。因此,在這里,比在任何課程中更可能的是,我們不僅會實現(xiàn)該方法,還會討論可以執(zhí)行的操作,以便在實現(xiàn)相同的同時具有概念清晰和強(qiáng)大的命令。我們將討論的操作如下:
向集合中添加元素
對集合進(jìn)行排序
在集合中搜索
復(fù)制元素
不相交的集合
java.util.Collections類的addAll()方法用于將所有指定元素添加到指定集合中。要添加的元素可以單獨(dú)指定,也可以作為數(shù)組指定。
例子
// Java Program to Demonstrate Adding Elements
// Using addAll() method
// Importing required classes
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating a list
// Declaring object of string type
List<String> items = new ArrayList<>();
// Adding elements (items) to the list
items.add("Shoes");
items.add("Toys");
// Add one or more elements
Collections.addAll(items, "Fruits", "Bat", "Ball");
// Printing the list contents
for (int i = 0; i < items.size(); i++) {
System.out.print(items.get(i) + " ");
}
}
}
輸出
鞋 玩具 水果 蝙蝠 球
java.util.Collections.sort()用于對存在于指定集合列表中的元素進(jìn)行升序排序。java.util.Collections.reverseOrder()用于按降序排序。
例子
// Java program to demonstrate sorting
// a Collections using sort() method
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
// Main Class
// SortingCollectionExample
class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating a list
// Declaring object of string type
List<String> items = new ArrayList<>();
// Adding elements to the list
// using add() method
items.add("Shoes");
items.add("Toys");
// Adding one or more elements using addAll()
Collections.addAll(items, "Fruits", "Bat", "Mouse");
// Sorting according to default ordering
// using sort() method
Collections.sort(items);
// Printing the elements
for (int i = 0; i < items.size(); i++) {
System.out.print(items.get(i) + " ");
}
System.out.println();
// Sorting according to reverse ordering
Collections.sort(items, Collections.reverseOrder());
// Printing the reverse order
for (int i = 0; i < items.size(); i++) {
System.out.print(items.get(i) + " ");
}
}
}
輸出
蝙蝠水果鼠標(biāo)鞋玩具
玩具 鞋 老鼠 水果 蝙蝠
java.util.Collections.binarySearch()方法返回對象在排序列表中的位置。使用該方法時,列表應(yīng)按升序排序,否則該方法返回的結(jié)果將是錯誤的。如果元素存在于列表中,該方法將返回該元素在排序列表中的位置,否則,該方法返回的結(jié)果將是-(如果存在該元素應(yīng)該存在的插入點)-1) .
例子
// Java Program to Demonstrate Binary Search
// Using Collections.binarySearch()
// Importing required classes
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
// Main class
// BinarySearchOnACollection
public class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating a List
// Declaring object of string type
List<String> items = new ArrayList<>();
// Adding elements to object
// using add() method
items.add("Shoes");
items.add("Toys");
items.add("Horse");
items.add("Ball");
items.add("Grapes");
// Sort the List
Collections.sort(items);
// BinarySearch on the List
System.out.println(
"The index of Horse is "
+ Collections.binarySearch(items, "Horse"));
// BinarySearch on the List
System.out.println(
"The index of Dog is "
+ Collections.binarySearch(items, "Dog"));
}
}
輸出
馬的指數(shù)是2
Dog的指數(shù)是-2
java.util.Collections類的copy()方法用于將一個列表中的所有元素復(fù)制到另一個列表中。操作后,目標(biāo)列表中每個復(fù)制元素的索引將與其在源列表中的索引相同。目標(biāo)列表必須至少與源列表一樣長。如果它更長,則目標(biāo)列表中的其余元素不受影響。
例子
// Java Program to Demonstrate Copying Elements
// Using copy() method
// Importing required classes
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
// Main class
// CopyOneCollectionToAnother
class GFG {
// Main driver method
public static void main(String[] args)
{
// Create destination list
List<String> destination_List = new ArrayList<>();
// Add elements
destination_List.add("Shoes");
destination_List.add("Toys");
destination_List.add("Horse");
destination_List.add("Tiger");
// Print the elements
System.out.println(
"The Original Destination list is ");
for (int i = 0; i < destination_List.size(); i++) {
System.out.print(destination_List.get(i) + " ");
}
System.out.println();
// Create source list
List<String> source_List = new ArrayList<>();
// Add elements
source_List.add("Bat");
source_List.add("Frog");
source_List.add("Lion");
// Copy the elements from source to destination
Collections.copy(destination_List, source_List);
// Printing the modified list
System.out.println(
"The Destination List After copying is ");
for (int i = 0; i < destination_List.size(); i++) {
System.out.print(destination_List.get(i) + " ");
}
}
}
輸出
原始目的地列表是
鞋 玩具 馬 老虎
復(fù)制后的目的地列表是
蝙蝠蛙獅子老虎
java.util.Collections.disjoint()用于檢查兩個指定的集合是否不相交。更正式地說,如果兩個集合沒有共同的元素,則它們是不相交的。如果兩個集合沒有任何共同元素,則返回 true。
例子
// Java Program to Illustrate Working of Disjoint Function
// Importing required classes
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
// Main class
// DisjointCollectionsExample
class GFG {
// Main driver method
public static void main(String[] args)
{
// Create list1
List<String> list1 = new ArrayList<>();
// Add elements to list1
list1.add("Shoes");
list1.add("Toys");
list1.add("Horse");
list1.add("Tiger");
// Create list2
List<String> list2 = new ArrayList<>();
// Add elements to list2
list2.add("Bat");
list2.add("Frog");
list2.add("Lion");
// Check if disjoint or not
System.out.println(
Collections.disjoint(list1, list2));
}
}
輸出
真的
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743