Java教程

Java控制語句

面向物件程式設計

Java內建類

Java檔案處理

Java錯誤和異常

Java多執行緒

Java同步

Java網路程式設計

Java集合

Java介面

Java資料結構

Java集合演算法

高階Java

Java雜項

Java APIs和框架

Java類參考

Java實用資源

Java集合演算法



集合框架定義了可以應用於集合和對映的幾種演算法。

這些演算法在Collections類中定義為靜態方法。一些方法可能丟擲ClassCastException異常(當嘗試比較不相容的型別時發生)或UnsupportedOperationException異常(當嘗試修改不可修改的集合時發生)。

集合框架演算法中定義的方法總結如下表所示:

序號 方法及描述
1

static int binarySearch(List list, Object value, Comparator c)

根據c對列表進行排序,然後在列表中搜索value。返回value在列表中的位置,如果未找到則返回-1。

2

static int binarySearch(List list, Object value)

在列表中搜索value。列表必須已排序。返回value在列表中的位置,如果未找到則返回-1。

3

static void copy(List list1, List list2)

將list2的元素複製到list1。

4

static Enumeration enumeration(Collection c)

返回c的列舉。

5

static void fill(List list, Object obj)

將obj賦值給列表的每個元素。

6

static int indexOfSubList(List list, List subList)

在list中搜索subList的第一次出現。返回第一次匹配的索引,如果未找到匹配項則返回-1。

7

static int lastIndexOfSubList(List list, List subList)

在list中搜索subList的最後一次出現。返回最後一次匹配的索引,如果未找到匹配項則返回-1。

8

static ArrayList list(Enumeration enum)

返回包含enum元素的ArrayList。

9

static Object max(Collection c, Comparator comp)

返回c中由comp確定的最大元素。

10

static Object max(Collection c)

返回c中由自然排序確定的最大元素。集合不需要排序。

11

static Object min(Collection c, Comparator comp)

返回c中由comp確定的最小元素。集合不需要排序。

12

static Object min(Collection c)

返回c中由自然排序確定的最小元素。

13

static List nCopies(int num, Object obj)

返回包含num個obj副本的不可變列表。num必須大於或等於零。

14

static boolean replaceAll(List list, Object old, Object new)

將列表中所有出現的old替換為new。如果至少發生一次替換則返回true,否則返回false。

15

static void reverse(List list)

反轉list中的序列。

16

static Comparator reverseOrder( )

返回一個反向比較器。

17

static void rotate(List list, int n)

將list向右旋轉n個位置。要向左旋轉,請對n使用負值。

18

static void shuffle(List list, Random r)

使用r作為隨機數源,對列表中的元素進行洗牌(即隨機化)。

19

static void shuffle(List list)

對list中的元素進行洗牌(即隨機化)。

20

static Set singleton(Object obj)

將obj作為不可變集合返回。這是將單個物件轉換為集合的簡單方法。

21

static List singletonList(Object obj)

將obj作為不可變列表返回。這是將單個物件轉換為列表的簡單方法。

22

static Map singletonMap(Object k, Object v)

將鍵/值對k/v作為不可變對映返回。這是將單個鍵/值對轉換為對映的簡單方法。

23

static void sort(List list, Comparator comp)

根據comp對list的元素進行排序。

24

static void sort(List list)

根據其自然順序對列表的元素進行排序。

25

static void swap(List list, int idx1, int idx2)

交換列表中由idx1和idx2指定的索引處的元素。

26

static Collection synchronizedCollection(Collection c)

返回由c支援的執行緒安全集合。

27

static List synchronizedList(List list)

返回由list支援的執行緒安全列表。

28

static Map synchronizedMap(Map m)

返回由m支援的執行緒安全對映。

29

static Set synchronizedSet(Set s)

返回由s支援的執行緒安全集合。

30

static SortedMap synchronizedSortedMap(SortedMap sm)

返回由sm支援的執行緒安全排序對映。

31

static SortedSet synchronizedSortedSet(SortedSet ss)

返回由ss支援的執行緒安全排序集合。

32

static Collection unmodifiableCollection(Collection c)

返回由c支援的不可修改集合。

33

static List unmodifiableList(List list)

返回由list支援的不可修改列表。

34

static Map unmodifiableMap(Map m)

返回由m支援的不可修改對映。

35

static Set unmodifiableSet(Set s)

返回由s支援的不可修改集合。

36

static SortedMap unmodifiableSortedMap(SortedMap sm)

返回一個由sm支援的不可修改的有序對映。

37

static SortedSet unmodifiableSortedSet(SortedSet ss)

返回一個由ss支援的不可修改的有序集合。

示例 1

以下是一個示例,演示了使用 LinkedList 新增元素並將其元素按逆序排序的各種演算法。使用迭代器迭代列表,然後將其洗牌,最後檢索並列印最小值和最大值。

import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class AlgorithmsDemo {

   public static void main(String args[]) {
      
      // Create and initialize linked list
      List<Integer< ll = new LinkedList<<();
      ll.add(Integer.valueOf(-8));
      ll.add(Integer.valueOf(20));
      ll.add(Integer.valueOf(-20));
      ll.add(Integer.valueOf(8));
      
      // Create a reverse order comparator
      Comparator<Integer< r = Collections.reverseOrder();
      
      // Sort list by using the comparator
      Collections.sort(ll, r);
      
      // Get iterator
      Iterator<Integer< li = ll.iterator();
      System.out.print("List sorted in reverse: ");
      
      while(li.hasNext()) {
         System.out.print(li.next() + " ");
      }
      System.out.println();
   }
}

輸出

List sorted in reverse: 20 8 -8 -20

示例 2

以下是一個示例,演示了使用 LinkedList 新增元素並將其元素按自然順序排序的各種演算法。使用迭代器迭代列表,然後將其洗牌,最後檢索並列印最小值和最大值。

import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class AlgorithmsDemo {

   public static void main(String args[]) {
      
      // Create and initialize linked list
      List<Integer> ll = new LinkedList<>();
      ll.add(Integer.valueOf(-8));
      ll.add(Integer.valueOf(20));
      ll.add(Integer.valueOf(-20));
      ll.add(Integer.valueOf(8));
      
      
      // Sort list by using the default comparator
      Collections.sort(ll);
      
      // Get iterator
      Iterator<Integer> li = ll.iterator();
      System.out.print("List sorted: ");
      
      while(li.hasNext()) {
         System.out.print(li.next() + " ");
      }
      System.out.println();
      Collections.shuffle(ll);
      
      // display randomized list
      li = ll.iterator();
      System.out.print("List shuffled: ");
      
      while(li.hasNext()) {
         System.out.print(li.next() + " ");
      }

      System.out.println();
      System.out.println("Minimum: " + Collections.min(ll));
      System.out.println("Maximum: " + Collections.max(ll));
   }
}

輸出

List sorted: -20 -8 8 20 
List shuffled: -20 -8 20 8 
Minimum: -20
Maximum: 20

示例 3

以下是一個示例,演示了使用 LinkedList 新增字串元素並將其元素按自然順序排序的各種演算法。列印列表,然後將其洗牌,最後檢索並列印最小值和最大值。

import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class AlgorithmsDemo {

   public static void main(String args[]) {

      // Create and initialize linked list
      List<String> list = new LinkedList<>();
      list.add("Ram");
      list.add("Mohan");
      list.add("Julie");
      list.add("Raheem");

      // Sort list by using the default comparator
      Collections.sort(list);

      // print the sorted list
      System.out.println("Sorted List: " + list);

      // shuffle the list
      Collections.shuffle(list);

      // print the shuffled list
      System.out.println("Shuffled List: " + list);

      System.out.println("Minimum: " + Collections.min(list));
      System.out.println("Maximum: " + Collections.max(list));
   }
}

輸出

Sorted List: [Julie, Mohan, Raheem, Ram]
Shuffled List: [Mohan, Raheem, Julie, Ram]
Minimum: Julie
Maximum: Ram
java_collections.htm
廣告
© . All rights reserved.