更新时间:2022-09-13 09:42:35 来源:极悦 浏览833次
Collections类是Java Collections Framework中的实用程序类之一。java.util包包含 Collections 类。Collections 类基本上与对集合进行操作或返回集合的静态方法一起使用。如果传递给方法的集合或对象为空 ,则此类的所有方法都会抛出NullPointerException 。
语法:声明
公共类集合
扩展对象
集合类基本上包含下面列出的 3 个字段,可用于返回不可变实体。
EMPTY_LIST 获取不可变的空列表
EMPTY_SET 获取不可变的空集
EMPTY_MAP 获取不可变的空 Map
现在让我们讨论一下这个类中存在的方法,以便我们稍后可以在程序中使用这些内置功能。以下是以表格格式列出的方法,如下所示:
方法 | 描述 |
---|---|
addAll(Collection<? super T> c, T... 元素) | 它用于将指定的集合元素插入到指定的集合中。 |
asLifoQueue(Deque<T> deque) | 此方法将 Deque 的视图返回为后进先出 (Lifo) 队列。 |
binarySearch(List<? extends Comparable> list, T key) | 此方法使用指定列表中的二进制搜索来搜索键。 |
binarySearch(List<? extends T> list, T key, Comparator<? super T> c) | 此方法使用二进制搜索算法在指定列表中搜索指定对象。 |
checkedCollection(Collection<E> c, Class<E> 类型) | 此方法返回指定集合的动态类型安全视图。 |
checkedList(List<E> 列表,Class<E> 类型) | 此方法返回指定列表的动态类型安全视图。 |
checkedMap(Map<K,V> m, Class<K> keyType, Class<V> valueType) | 此方法返回指定映射的动态类型安全视图。 |
checkedNavigableMap(NavigableMap<K,V> m, Class<K> keyType, Class<V> valueType) | 此方法返回指定可导航地图的动态类型安全视图。 |
checkedNavigableSet(NavigableSet<E> s, Class<E> 类型) | 此方法返回指定可导航集的动态类型安全视图。 |
checkedQueue(Queue<E> 队列,Class<E> 类型) | 此方法返回指定队列的动态类型安全视图。 |
checkedSet(Set<E> s, Class<E> 类型) | 此方法返回指定集合的动态类型安全视图。 |
checkedSortedMap(SortedMap<K,V> m, Class<K> keyType, Class<V> valueType) | 此方法返回指定排序映射的动态类型安全视图。 |
checkedSortedSet(SortedSet<E> s, Class<E> 类型) | 此方法返回指定排序集的动态类型安全视图。 |
复制(List<? super T> dest, List<? extends T> src) | 此方法将一个列表中的所有元素复制到另一个列表中。 |
不相交(Collection<?> c1, Collection<?> c2) | 如果两个指定的集合没有共同的元素,则此方法返回 true。 |
空枚举() | 此方法返回一个没有元素的枚举。 |
空迭代器() | 此方法返回一个没有元素的迭代器。 |
空列表() | 此方法返回一个空列表(不可变)。 |
空列表迭代器() | 此方法返回一个没有元素的列表迭代器。 |
空地图() | 此方法返回一个空映射(不可变)。 |
空导航地图() | 此方法返回一个空的可导航地图(不可变)。 |
空导航集() | 此方法返回一个空的可导航集(不可变)。 |
空集() | 此方法返回一个空集(不可变)。 |
空排序映射() | 此方法返回一个空的排序映射(不可变)。 |
空排序集() | 此方法返回一个空的排序集(不可变)。 |
枚举(Collection<T> c) | 此方法返回对指定集合的枚举。 |
fill(List<?super T> list, T obj) | 此方法用指定元素替换指定列表的所有元素。 |
频率(Collection<?> c, Object o) | 此方法返回指定集合中等于指定对象的元素数。 |
indexOfSubList(List<?> source, List<?> target) | 此方法返回指定目标列表在指定源列表中第一次出现的起始位置,如果没有出现,则返回 -1。 |
lastIndexOfSubList(List<?> source, List<?> target) | 此方法返回指定源列表中指定目标列表的最后一次出现的起始位置,如果没有这样的出现,则返回 -1。 |
列表(枚举<T> e) | 此方法返回一个数组列表,其中包含指定枚举返回的元素,这些元素按枚举返回的顺序排列。 |
max(Collection<? extends T> coll) | 此方法根据元素的自然顺序返回给定集合的最大元素。 |
max(Collection<? extends T> coll, Comparator<? super T> comp) | 此方法根据指定比较器引入的顺序返回给定集合的最大元素。 |
min(Collection<? extends T> coll) | 此方法根据元素的自然顺序返回给定集合的最小元素。 |
min(Collection<? extends T> coll, Comparator<? super T> comp) | 此方法根据指定比较器诱导的顺序返回给定集合的最小元素。 |
nCopies(int n, T o) | 此方法返回一个由指定对象的 n 个副本组成的不可变列表。 |
newSetFromMap(Map<E,Boolean> map) | 此方法返回由指定映射支持的集合。 |
replaceAll(List<T> list, T oldVal, T newVal) | 此方法将列表中一个指定值的所有出现替换为另一个。 |
反向(列表<?>列表) | 此方法反转指定列表中元素的顺序 |
相反的顺序() | 此方法返回一个比较器,该比较器将自然顺序的反向强加于实现 Comparable 接口的对象集合。 |
reverseOrder(Comparator<T> cmp) | 此方法返回一个比较器,该比较器强制指定比较器的反向排序。 |
旋转(List<?> list, int distance) | 此方法将指定列表中的元素旋转指定距离。 |
洗牌(列表<?>列表) | 此方法使用默认随机源随机排列指定列表。 |
shuffle(List<?> list, Random rnd) | 此方法使用指定的随机源随机排列指定的列表。 |
singletonMap(K key, V value) | 此方法返回一个不可变映射,仅将指定键映射到指定值。 |
单例(T o) | 此方法返回一个只包含指定对象的不可变集合。 |
单例列表(T o) | 此方法返回一个仅包含指定对象的不可变列表。 |
排序(列表<T>列表) | 此方法根据其元素的自然顺序对指定列表进行升序排序。 |
sort(List<T> list, Comparator<? super T> c) | 此方法根据指定比较器产生的顺序对指定列表进行排序。 |
交换(List<?> list, int i, int j) | 此方法交换指定列表中指定位置的元素。 |
synchronizedCollection(Collection<T> c) | 此方法返回由指定集合支持的同步(线程安全)集合。 |
同步列表(List<T> 列表) | 此方法返回由指定列表支持的同步(线程安全)列表。 |
synchronizedMap(Map<K,V> m) | 此方法返回由指定映射支持的同步(线程安全)映射。 |
synchronizedNavigableMap(NavigableMap<K,V> m) | 此方法返回由指定可导航地图支持的同步(线程安全)可导航地图。 |
synchronizedNavigableSet(NavigableSet<T> s) | 此方法返回由指定导航集支持的同步(线程安全)导航集。 |
同步集(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) | 此方法返回指定导航地图的不可修改视图。 |
unmodifiableNavigableSet(NavigableSet<T> s) | 此方法返回指定导航集的不可修改视图。 |
unmodifiableSet(Set<? extends T> s) | 此方法返回指定集合的不可修改视图。 |
unmodifiableSortedMap(SortedMap<K,? extends V> m) | 此方法返回指定排序地图的不可修改视图。 |
不可修改的SortedSet(SortedSet<T> s) | 此方法返回指定排序集的不可修改视图。 |
现在,我们已经完成了所有方法的列出,所以现在我们有一个微弱的暗示,我们可以了解这些方法在考虑全局编程视角时的重要性。编写优化代码时重要且经常使用的方法,因为在 java 中严重使用 Collections 类,您会在几乎每个 java 优化代码中看到这些方法。因此,在这里,比在任何课程中更可能的是,我们不仅会实现该方法,还会讨论可以执行的操作,以便在实现相同的同时具有概念清晰和强大的命令。我们将讨论的操作如下:
向集合中添加元素
对集合进行排序
在集合中搜索
复制元素
不相交的集合
java.util.Collections类的addAll()方法用于将所有指定元素添加到指定集合中。要添加的元素可以单独指定,也可以作为数组指定。
例子
// 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()用于对存在于指定集合列表中的元素进行升序排序。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) + " ");
}
}
}
输出
蝙蝠水果鼠标鞋玩具
玩具 鞋 老鼠 水果 蝙蝠
java.util.Collections.binarySearch()方法返回对象在排序列表中的位置。使用该方法时,列表应按升序排序,否则该方法返回的结果将是错误的。如果元素存在于列表中,该方法将返回该元素在排序列表中的位置,否则,该方法返回的结果将是-(如果存在该元素应该存在的插入点)-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"));
}
}
输出
马的指数是2
Dog的指数是-2
java.util.Collections类的copy()方法用于将一个列表中的所有元素复制到另一个列表中。操作后,目标列表中每个复制元素的索引将与其在源列表中的索引相同。目标列表必须至少与源列表一样长。如果它更长,则目标列表中的其余元素不受影响。
例子
// 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) + " ");
}
}
}
输出
原始目的地列表是
鞋 玩具 马 老虎
复制后的目的地列表是
蝙蝠蛙狮子老虎
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));
}
}
输出
真的
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习