Java アルゴリズム
Java アルゴリズム
このチュートリアルでは、例を使用して、Java コレクション フレームワークによって提供されるさまざまなアルゴリズムについて学習します。
Java コレクション フレームワークは、データ構造に格納された要素を操作するために使用できるさまざまなアルゴリズムを提供します。
Java のアルゴリズムは、コレクションに対してさまざまな操作を実行するために使用できる静的メソッドです。
アルゴリズムはさまざまなコレクションで使用できるため、ジェネリック アルゴリズムとも呼ばれます。 .
コレクション フレームワークで利用可能なさまざまなメソッドの実装を見てみましょう。
1. sort() を使用した並べ替え
sort()
コレクション フレームワークによって提供されるメソッドは、要素の並べ替えに使用されます。たとえば、
import java.util.ArrayList;
import java.util.Collections;
class Main {
public static void main(String[] args) {
// Creating an array list
ArrayList<Integer> numbers = new ArrayList<>();
// Add elements
numbers.add(4);
numbers.add(2);
numbers.add(3);
System.out.println("Unsorted ArrayList: " + numbers);
// Using the sort() method
Collections.sort(numbers);
System.out.println("Sorted ArrayList: " + numbers);
}
}
出力
Unsorted ArrayList: [4, 2, 3] Sorted ArrayList: [2, 3, 4]
ここでは、ソートは自然な順序 (昇順) で行われます。ただし、sort()
のソート順はカスタマイズできます。 Comparator インターフェイスを使用する方法 .
詳細については、Java Sorting をご覧ください。
2. shuffle() を使用したシャッフル
shuffle()
Java コレクション フレームワークのメソッドは、データ構造に存在するあらゆる種類の順序を破棄するために使用されます。並べ替えとは正反対のことを行います。たとえば、
import java.util.ArrayList;
import java.util.Collections;
class Main {
public static void main(String[] args) {
// Creating an array list
ArrayList<Integer> numbers = new ArrayList<>();
// Add elements
numbers.add(1);
numbers.add(2);
numbers.add(3);
System.out.println("Sorted ArrayList: " + numbers);
// Using the shuffle() method
Collections.shuffle(numbers);
System.out.println("ArrayList using shuffle: " + numbers);
}
}
出力
Sorted ArrayList: [1, 2, 3] ArrayList using shuffle: [2, 1, 3]
プログラムを実行すると、 shuffle()
メソッドはランダムな出力を返します。
シャッフル アルゴリズムは主に、ランダムな出力が必要なゲームで使用されます。
3.日常的なデータ操作
Java では、コレクション フレームワークは、データの操作に使用できるさまざまなメソッドを提供します。
reverse()
- 要素の順序を逆にしますfill()
- コレクション内のすべての要素を指定された値に置き換えますcopy()
- 指定されたソースから宛先への要素のコピーを作成しますswap()
- コレクション内の 2 つの要素の位置を入れ替えますaddAll()
- コレクションのすべての要素を他のコレクションに追加します
たとえば、
import java.util.Collections;
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
// Creating an ArrayList
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
System.out.println("ArrayList1: " + numbers);
// Using reverse()
Collections.reverse(numbers);
System.out.println("Reversed ArrayList1: " + numbers);
// Using swap()
Collections.swap(numbers, 0, 1);
System.out.println("ArrayList1 using swap(): " + numbers);
ArrayList<Integer> newNumbers = new ArrayList<>();
// Using addAll
newNumbers.addAll(numbers);
System.out.println("ArrayList2 using addAll(): " + newNumbers);
// Using fill()
Collections.fill(numbers, 0);
System.out.println("ArrayList1 using fill(): " + numbers);
// Using copy()
Collections.copy(newNumbers, numbers);
System.out.println("ArrayList2 using copy(): " + newNumbers);
}
}
出力
ArrayList1: [1, 2] Reversed ArrayList1: [2, 1] ArrayList1 Using swap(): [1, 2] ArrayList2 using addALl(): [1, 2] ArrayList1 using fill(): [0, 0] ArrayList2 using copy(): [0, 0]
注意 :copy()
実行中 両方のリストが同じサイズでなければなりません。
4. binarySearch() を使用した検索
binarySearch()
Java コレクション フレームワークのメソッドは、指定された要素を検索します。指定されたコレクション内の要素の位置を返します。たとえば、
import java.util.Collections;
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
// Creating an ArrayList
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
// Using binarySearch()
int pos = Collections.binarySearch(numbers, 3);
System.out.println("The position of 3 is " + pos);
}
}
出力
The position of 3 is 2.
注意 :binarySearch()
を実行する前にコレクションをソートする必要があります メソッド。
詳細については、Java Binary Search をご覧ください。
5.構成
frequency()
- コレクション内に要素が存在する回数を返しますdisjoint()
- 2 つのコレクションに共通の要素が含まれているかどうかを確認します
たとえば、
import java.util.Collections;
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
// Creating an ArrayList
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(2);
System.out.println("ArrayList1: " + numbers);
int count = Collections.frequency(numbers, 2);
System.out.println("Count of 2: " + count);
ArrayList<Integer> newNumbers = new ArrayList<>();
newNumbers.add(5);
newNumbers.add(6);
System.out.println("ArrayList2: " + newNumbers);
boolean value = Collections.disjoint(numbers, newNumbers);
System.out.println("Two lists are disjoint: " + value);
}
}
出力
ArrayList1: [1, 2, 3, 2] Count of 2: 2 ArrayList2: [5, 6] Two lists are disjoint: true
6.極端な値を見つける
min()
と max()
Java コレクション フレームワークのメソッドを使用して、それぞれ最小要素と最大要素を見つけます。たとえば、
import java.util.Collections;
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
// Creating an ArrayList
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
// Using min()
int min = Collections.min(numbers);
System.out.println("Minimum Element: " + min);
// Using max()
int max = Collections.max(numbers);
System.out.println("Maximum Element: " + max);
}
}
出力
Minimum Element: 1 Maximum Element: 3
Java