专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 一文告诉你Java中的集合类有哪些

一文告诉你Java中的集合类有哪些

更新时间:2022-09-13 09:42:35 来源:星辉 浏览722次

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 优化代码中看到这些方法。因此,在这里,比在任何课程中更可能的是,我们不仅会实现该方法,还会讨论可以执行的操作,以便在实现相同的同时具有概念清晰和强大的命令。我们将讨论的操作如下:

向集合中添加元素

对集合进行排序

在集合中搜索

复制元素

不相交的集合

操作一:向 Collections 类对象添加元素

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) + " ");
  }
 }
}

输出

鞋 玩具 水果 蝙蝠 球

操作 2:对集合进行排序

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) + " ");
  }
 }
}

输出

蝙蝠水果鼠标鞋玩具
玩具 鞋 老鼠 水果 蝙蝠

操作 3:在集合中搜索

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

操作 4:复制元素

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) + " ");
  }
 }
}

输出

原始目的地列表是
鞋 玩具 马 老虎
复制后的目的地列表是
蝙蝠蛙狮子老虎

操作 5:不相交收集

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));
 }
}

输出

真的

 

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>