當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Collections用法及代碼示例


集合Java 中的 class 是 Java Collections Framework 中的實用程序類之一。 java.util 包包含 Java 中的 Collections 類。 Java Collections 類與靜態方法對集合進行操作或返回集合。該類的所有方法都會拋出NullPointerException如果傳遞給方法的集合或對象為 null。

集合類聲明

Collection類聲明的語法如下:

public class Collections extends Object

記住: Object是所有類的父類。

Collection Classes in java

Java集合類

集合框架包含類和接口。雖然兩者看似相同但有一定的Collection 類和 Collection 框架之間的區別。 Java中有一些類,如下所示:

1.ArrayList

ArrayList 是使用列表接口實現的類,提供動態數組的函數,其中數組的大小不固定。

用法:

ArrayList<_type_> var_name = new ArrayList<_type_>();

2.矢量

Vector 是集合類的一部分,它實現了可以根據需要增大或縮小其大小的動態數組。

用法:

public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, 
Cloneable, Serializable

3. 堆棧

Stack 是 Java 集合類的一部分,它建模並實現了 Stack 數據結構。它基於後進先出(LIFO)的基本原則。

用法:

public class Stack<E> extends Vector<E>

4.LinkedList

LinkedList 類是 LinkedList 數據結構的實現。它可以存儲不存儲在連續位置的元素,並且每個元素都是具有不同數據部分和不同地址部分的單獨對象。

用法:

LinkedList name = new LinkedList();  

5.HashSet

HashSet是使用Hashtable數據結構實現的。它為執行添加、刪除、包含和大小等操作提供恒定的時間性能。

用法:

public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable

6.LinkedHashSet

LinkedHashSet 是 HashSet 的有序版本,它維護跨所有元素的 doubly-linked 列表。

用法:

public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, Serializable

7.TreeSet

TreeSet 類是 Java 中 SortedSet 接口的實現,它使用 Tree 進行存儲。無論是否提供顯式比較器,元素的順序都由集合使用其自然順序來維護。

用法:

TreeSet t = new TreeSet(Collection col);

8.PriorityQueue

PriorityQueue 基於優先級堆。優先級隊列的元素根據自然順序或通過隊列構造時提供的比較器進行排序,具體取決於使用的構造函數。

用法:

public class PriorityQueue<E> extends AbstractQueue<E> implements Serializable

9.ArrayDeque

Java 中的 ArrayDeque 類是 Deque 接口的實現,它使用可調整大小的數組來存儲其元素。 ArrayDeque 類為從兩端插入和刪除元素提供恒定時間性能。

用法:

public class ArrayDeque<E> extends 
AbstractCollection<E> implements Deque<E>, Cloneable,Serializable

10.HashMap

HashMap 類與HashTable 類似,但數據不同步。它將數據存儲在(鍵,值)對中,您可以通過其他類型的索引訪問它們。

用法:

public class HashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable

11.EnumMap

EnumMap 擴展 AbstractMap 並實現 Java 中的 Map 接口 .

用法:

public class EnumMap<K extends Enum<K>,V> extends 
AbstractMap<K,V> implements Serializable, Cloneable

12.AbstractMap

AbstractMap 類是 Java 集合框架的一部分。它實現了 Map 接口來為其提供結構,這樣可以使進一步的實現變得更容易。

用法:

public abstract class AbstractMap<K,V> extends Object, implements Map<K,V>

13.TreeMap

TreeMap 是使用 Red-Black 樹實現的。TreeMap 提供鍵值對的有序集合,其中鍵根據其自然順序或傳遞給構造函數的自定義比較器進行排序。

SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...)); 

Java 集合類字段

集合類包含如下列出的 3 個字段,可用於返回不可變實體。

  • EMPTY_LIST 獲取不可變的空列表
  • EMPTY_SET 獲取不可變的空集
  • EMPTY_MAP 獲得一個不可變的空 Map

現在讓我們討論此類中存在的方法,以便我們稍後可以在程序中使用這些內置函數。下麵以表格形式列出了這些方法,如下所示:

Methods

Description

addAll(Collection<? super T> c, T… 元素) 用於將指定的集合元素插入到指定的集合中。
asLifoQueue(Deque<T> 雙端隊列) 此方法返回作為後進先出 (Lifo) 隊列的 Deque 視圖。
binarySearch(List<? extends Comparable> 列表,T 鍵) 此方法使用二分搜索在指定列表中搜索鍵。
binarySearch(List<? extends T> list, T key, Comparator<? super T> c) 此方法使用二分搜索算法在指定列表中搜索指定對象。
checkCollection(Collection<E> c, Class<E> 類型) 此方法返回指定集合的動態類型安全視圖。
checkList(List<E> 列表,Class<E> 類型) 此方法返回指定列表的動態類型安全視圖。
checkMap(Map<K,V> m, Class<K> keyType, Class<V> valueType) 此方法返回指定映射的動態類型安全視圖。
checkNavigableMap(NavigableMap<K,V> m, Class<K> keyType, Class<V> valueType) 此方法返回指定可導航Map的動態類型安全視圖。
checkNavigableSet(NavigableSet<E> s, Class<E> 類型) 此方法返回指定可導航集的動態類型安全視圖。
checkQueue(Queue<E> 隊列, Class<E> 類型) 此方法返回指定隊列的動態類型安全視圖。
checkSet(Set<E> s, Class<E> 類型) 此方法返回指定集的動態類型安全視圖。
checkSortedMap(SortedMap<K,V> m, Class<K> keyType, Class<V> valueType) 此方法返回指定排序映射的動態類型安全視圖。
checkSortedSet(SortedSet<E> s, Class<E> 類型) 此方法返回指定排序集的動態類型安全視圖。
複製(列表<?超級T> dest,列表<?擴展T> src) 此方法將一個列表中的所有元素複製到另一個列表中。
不相交(集合<?> c1,集合<?> c2) 如果兩個指定的集合沒有共同元素,則此方法返回 true。
emptyEnumeration() 此方法返回一個沒有元素的枚舉。
emptyIterator() 此方法返回一個沒有元素的迭代器。
emptyList() 此方法返回一個空列表(不可變)。
emptyListIterator() 此方法返回一個沒有元素的列表迭代器。
emptyMap() 此方法返回一個空映射(不可變)。
emptyNavigableMap() 此方法返回一個空的可導航Map(不可變)。
emptyNavigableSet() 此方法返回一個空的可導航集(不可變)。
emptySet() 此方法返回一個空集(不可變)。
emptySortedMap() 此方法返回一個空的排序映射(不可變)。
emptySortedSet() 此方法返回一個空的排序集(不可變)。
枚舉(集合<T> c) 此方法返回指定集合的枚舉。
fill(List<? super T> 列表, T obj) 此方法用指定元素替換指定列表中的所有元素。
頻率(集合<?> c,對象o) 此方法返回指定集合中等於指定對象的元素數量。
indexOfSubList(List<?> 源, List<?> 目標) 此方法返回指定源列表中指定目標列表第一次出現的起始位置,如果沒有出現,則返回 -1。
lastIndexOfSubList(List<?> 源, List<?> 目標) 此方法返回指定源列表中最後一次出現的指定目標列表的起始位置,如果沒有此類出現,則返回 -1。
列表(枚舉<T> e) 此方法返回一個數組列表,其中包含指定枚舉返回的元素(按枚舉返回的順序排列)。
max(集合 <? 擴展 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> 列表, T oldVal, T newVal) 此方法將列表中所有出現的一個指定值替換為另一個指定值。
反向(列表 <?> 列表) 該方法反轉指定列表中元素的順序
reverseOrder() 此方法返回一個比較器,該比較器對實現 Comparable 接口的對象集合施加與自然順序相反的順序。
verseOrder(比較器<T> cmp) 此方法返回一個比較器,該比較器強製指定比較器的相反順序。
旋轉(列表<?>列表,int距離) 此方法將指定列表中的元素旋轉指定的距離。
Shuffle[洗牌](列表 <?> 列表) 此方法使用默認的隨機源隨機排列指定的列表。
洗牌(列表 <?> 列表,隨機 rnd) 此方法使用指定的隨機源隨機排列指定的列表。
singletonMap(K key, V value) 此方法返回一個不可變的映射,僅將指定的鍵映射到指定的值。
singleton(T o) 此方法返回一個僅包含指定對象的不可變集。
singletonList(T o) 此方法返回一個僅包含指定對象的不可變列表。
排序(列表<T>列表) 此方法根據其元素的自然順序對指定列表進行升序排序。
排序(列表 <T> 列表,比較器 <? super T> c) 此方法根據指定比較器產生的順序對指定列表進行排序。
交換(列表 <?> 列表,int i,int j) 此方法交換指定列表中指定位置的元素。
同步集合(集合<T> c) 此方法返回由指定集合支持的同步(線程安全)集合。
同步列表(列表 <T> 列表) 此方法返回由指定列表支持的同步(線程安全)列表。
同步Map(Map<K,V> m) 此方法返回由指定映射支持的同步(線程安全)映射。
同步NavigableMap(NavigableMap<K,V> m) 此方法返回由指定的可導航映射支持的同步(線程安全)可導航映射。
同步的NavigableSet(NavigableSet<T> s) 此方法返回由指定可導航集支持的同步(線程安全)可導航集。
同步集(Set<T> s) 此方法返回由指定集支持的同步(線程安全)集。
同步SortedMap(SortedMap<K,V> m) 此方法返回由指定排序映射支持的同步(線程安全)排序映射。
SynchronizedSortedSet(SortedSet<T> s) 此方法返回由指定排序集支持的同步(線程安全)排序集。
unmodifierCollection(Collection<? extends T> c) 此方法返回指定集合的不可修改的視圖。
unmodifierList(List<? 擴展 T> 列表) 此方法返回指定列表的不可修改視圖。
unmodifierNavigableMap(NavigableMap<K,? 擴展 V> m) 此方法返回指定可導航Map的不可修改視圖。
不可修改的NavigableSet(NavigableSet<T> s) 此方法返回指定可導航集的不可修改視圖。
unmodifierSet(Set<?extends T> s) 此方法返回指定集的不可修改視圖。
不可修改的SortedMap(SortedMap<K,? extends V> m) 此方法返回指定排序映射的不可修改視圖。
不可修改的SortedSet(SortedSet<T> s) 此方法返回指定排序集的不可修改視圖。

現在,我們已經列出了所有方法,因此現在我們已經有了一個微弱的提示,可以讓我們了解這些方法在考慮全局編程角度時的重要性。編寫優化代碼時重要且經常使用的方法,因為您將在幾乎每個 Java 優化代碼中看到這些方法,因為 Java 中 Collections 類的大量使用。因此,在這裏,比在任何課程中更有可能的是,我們不僅會實現該方法,還會討論可以執行的操作,以便人們在實現相同方法時能夠擁有清晰的概念和強大的命令。

Java 集合示例

Java 中集合類的示例如下:

  • 將元素添加到集合中
  • 對集合進行排序
  • 在集合中搜索
  • 複製元素
  • 不相交集合

1. 將元素添加到 Collections 類對象

Collections addAll()的方法java.util.Collections 類class 用於將所有指定元素添加到指定集合中。要添加的元素可以單獨指定或作為數組指定。

例子

Java


// 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) + " "); 
        } 
    } 
}
輸出
Shoes Toys Fruits Bat Ball 

2.對集合進行排序

java.util.Collections.sort() 用於按升序對指定集合list 中存在的元素進行排序。 java.util.Collections.reverseOrder()用於降序排序。

示例

Java


// 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) + " "); 
        } 
    } 
} 
輸出
Bat Fruits Mouse Shoes Toys 
Toys Shoes Mouse Fruits Bat 

3. 在集合中搜索

Collections.binarySearch()方法返回對象在排序列表中的位置。要使用此方法,列表應按升序排序,否則該方法返回的結果將是錯誤的。如果該元素存在於列表中,則該方法將返回該元素在排序列表中的位置,否則該方法返回的結果將為-(元素應該存在的插入點(如果存在)-1)

示例

Java


// 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")); 
    } 
}
輸出
The index of Horse is 2
The index of Dog is -2

4. 複製元素

Collections copy()的方法java.util.Collections 類類用於將一個列表中的所有元素複製到另一個列表中。操作完成後,目標列表中每個複製元素的索引將與其在源列表中的索引相同。目標列表必須至少與源列表一樣長。如果更長,則目標列表中的其餘元素不受影響。

示例

Java


// 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) + " "); 
        } 
    } 
}
輸出
The Original Destination list is 
Shoes Toys Horse Tiger 
The Destination List After copying is 
Bat Frog Lion Tiger 

5. 不相交集合

java.util.Collections.disjoint() 用於檢查兩個指定集合是否不相交。更正式地說,如果兩個集合沒有共同元素,則它們是不相交的。如果兩個集合沒有任何共同元素,則返回 true。

示例

Java


// 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)); 
    } 
}
輸出
true

相關文章:



相關用法


注:本文由純淨天空篩選整理自lavishgarg26大神的英文原創作品 Collections Class in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。