Java-収集アルゴリズム

コレクションフレームワークは、コレクションとマップに適用できるいくつかのアルゴリズムを定義します。

これらのアルゴリズムは、Collectionsクラス内の静的メソッドとして定義されています。いくつかの方法でClassCastException、互換性のないタイプを比較しようとしたときに発生します。 UnsupportedOperationException、変更できないコレクションを変更しようとしたときに発生します。

コレクションフレームワークのアルゴリズムで定義されているメソッドは、次の表にまとめられています。

シニア番号 方法と説明
1

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

次の順序でリスト内の値を検索します c。リスト内の値の位置を返します。値が見つからない場合は-1を返します。

2

static int binarySearch(List list, Object 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)

subListの最初の出現をリストで検索します。最初の一致のインデックスを返します。一致が見つからない場合は.1を返します。

7

static int lastIndexOfSubList(List list, List subList)

最後に出現したsubListをリストで検索します。最後に一致したもののインデックスを返します。一致するものが見つからない場合は.1を返します。

8

static ArrayList list(Enumeration 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)

の最小要素を返します ccompによって決定されます。コレクションを並べ替える必要はありません。

12

static Object min(Collection c)

の最小要素を返します c 自然順によって決定されます。

13

static List nCopies(int num, Object obj)

不変リストに含まれるobjのコピー数を返します。numはゼロ以上である必要があります。

14

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

リスト内の古いものをすべて新しいものに置き換えます。少なくとも1つの置換が発生した場合、trueを返します。それ以外の場合はfalseを返します。

15

static void reverse(List list)

リスト内の順序を逆にします。

16

static Comparator reverseOrder( )

逆コンパレータを返します。

17

static void rotate(List list, int n)

リストを回転させる n右側の場所。左に回転するには、に負の値を使用しますn。

18

static void shuffle(List list, Random r)

を使用してリスト内の要素をシャッフル(つまり、ランダム化)します r 乱数のソースとして。

19

static void shuffle(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によって決定されたリストの要素をソートします。

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)

リストに裏打ちされた変更不可能なリストを返します。

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。

例

以下は、さまざまなアルゴリズムを示す例です。

import java.util.*;
public class AlgorithmsDemo {

   public static void main(String args[]) {
      
      // Create and initialize linked list
      LinkedList ll = new LinkedList();
      ll.add(new Integer(-8));
      ll.add(new Integer(20));
      ll.add(new Integer(-20));
      ll.add(new Integer(8));
      
      // Create a reverse order comparator
      Comparator r = Collections.reverseOrder();
      
      // Sort list by using the comparator
      Collections.sort(ll, r);
      
      // Get iterator
      Iterator li = ll.iterator();
      System.out.print("List sorted in reverse: ");
      
      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 in reverse: 20 8 -8 -20
List shuffled: 20 -20 8 -8
Minimum: -20
Maximum: 20