Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Menguasai Algoritma Koleksi Java: Pengurutan, Pengacakan, dan Lainnya

Algoritma Java

Dalam tutorial ini, kita menjelajahi algoritma canggih yang disediakan oleh Java Collections framework melalui contoh-contoh praktis yang jelas.

Java Collections framework menyediakan serangkaian metode statis yang sering disebut algoritma generik yang memungkinkan Anda memanipulasi struktur data tanpa menulis kode boilerplate. Utilitas ini bekerja dengan koleksi apa pun yang mengimplementasikan antarmuka Collection, menawarkan kesederhanaan dan kinerja.

Di bawah, kita melalui algoritma yang paling sering digunakan, mengilustrasikan sintaks, perilaku, dan kasus penggunaan praktisnya.


1. Pengurutan dengan Collections.sort()

Metode sort() mengurutkan elemen dalam urutan alami (menaik). Untuk urutan kustom, berikan implementasi Comparator.

import java.util.ArrayList; import java.util.Collections; class Main { public static void main(String[] args) { ArrayList<Integer> numbers = new ArrayList<>(); numbers.add(4); numbers.add(2); numbers.add(3); System.out.println("Unsorted ArrayList: " + numbers); Collections.sort(numbers); System.out.println("Sorted ArrayList: " + numbers); } } 

Output

Unsorted ArrayList: [4, 2, 3] Sorted ArrayList: [2, 3, 4]

Untuk urutan menurun atau kriteria khusus domain, gunakan Comparator kustom—lihat panduan Java Sorting untuk detailnya.


2. Mengacak Urutan dengan Collections.shuffle()

Gunakan shuffle() untuk mengacak urutan elemen, ideal untuk skenario game atau sampling.

import java.util.ArrayList; import java.util.Collections; class Main { public static void main(String[] args) { ArrayList<Integer> numbers = new ArrayList<>(); numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("Sorted ArrayList: " + numbers); Collections.shuffle(numbers); System.out.println("ArrayList after shuffle: " + numbers); } } 

Output

Sorted ArrayList: [1, 2, 3] ArrayList after shuffle: [2, 1, 3]

Setiap run menghasilkan permutasi yang berbeda, berkat algoritma Fisher-Yates di balik layar.


3. Manipulasi Data Rutin

Java menawarkan serangkaian metode utilitas untuk mentransformasi koleksi:

import java.util.ArrayList; import java.util.Collections; class Main { public static void main(String[] args) { ArrayList<Integer> numbers = new ArrayList<>(); numbers.add(1); numbers.add(2); System.out.println("ArrayList1: " + numbers); Collections.reverse(numbers); System.out.println("Reversed ArrayList1: " + numbers); Collections.swap(numbers, 0, 1); System.out.println("ArrayList1 after swap(): " + numbers); ArrayList<Integer> newNumbers = new ArrayList<>(); newNumbers.addAll(numbers); System.out.println("ArrayList2 using addAll(): " + newNumbers); Collections.fill(numbers, 0); System.out.println("ArrayList1 after fill(): " + numbers); Collections.copy(newNumbers, numbers); System.out.println("ArrayList2 after copy(): " + newNumbers); } } 

Output

ArrayList1: [1, 2] Reversed ArrayList1: [2, 1] ArrayList1 after swap(): [1, 2] ArrayList2 using addAll(): [1, 2] ArrayList1 after fill(): [0, 0] ArrayList2 after copy(): [0, 0]

Catatan: Metode copy() mengharuskan koleksi tujuan memiliki setidaknya sebanyak elemen yang ada di koleksi sumber.


4. Pencarian Biner dengan Collections.binarySearch()

Menemukan elemen secara efisien dalam koleksi terurut. Metode mengembalikan indeks elemen atau titik penyisipan negatif jika tidak ditemukan.

import java.util.ArrayList; import java.util.Collections; class Main { public static void main(String[] args) { ArrayList<Integer> numbers = new ArrayList<>(); numbers.add(1); numbers.add(2); numbers.add(3); int pos = Collections.binarySearch(numbers, 3); System.out.println("The position of 3 is " + pos); } } 

Output

The position of 3 is 2.

Tips: Selalu urutkan koleksi sebelum memanggil binarySearch(); jika tidak, hasilnya tidak terdefinisi.

Jelajahi lebih dalam artikel Java Binary Search.


5. Komposisi Koleksi

Utilitas ini menganalisis hubungan antara koleksi:

import java.util.ArrayList; import java.util.Collections; class Main { public static void main(String[] args) { 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 disjoint = Collections.disjoint(numbers, newNumbers); System.out.println("Two lists are disjoint: " + disjoint); } } 

Output

ArrayList1: [1, 2, 3, 2] Count of 2: 2 ArrayList2: [5, 6] Two lists are disjoint: true

6. Mencari Nilai Minimum dan Maksimum

Mengambil elemen terkecil atau terbesar dengan min() dan max()—berguna untuk analisis dan pemeriksaan batas.

import java.util.ArrayList; import java.util.Collections; class Main { public static void main(String[] args) { ArrayList<Integer> numbers = new ArrayList<>(); numbers.add(1); numbers.add(2); numbers.add(3); int min = Collections.min(numbers); System.out.println("Minimum Element: " + min); int max = Collections.max(numbers); System.out.println("Maximum Element: " + max); } } 

Output

Minimum Element: 1 Maximum Element: 3

java

  1. Menguasai Operator Java: Tipe, Sintaks, & Contoh Praktis
  2. Komentar Java: Tipe, Penggunaan, dan Best Practices
  3. Menguasai Java Enhanced For Loop: Sintaks, Contoh, dan Best Practices
  4. Menguasai String Java: Pembuatan, Metode, dan Best Practices
  5. Menguasai Antarmuka Java: Konsep, Implementasi, dan Praktik Terbaik
  6. Menguasai Kelas Dalam Anonim Java: Definisi, Sintaks, dan Contoh Praktis
  7. Menguasai Java Try-with-Resources: Manajemen Sumber Daya Otomatis Dijelaskan
  8. Anotasi Java Dijelaskan: Jenis, Penempatan, dan Contoh Praktis
  9. Pernyataan Java: Panduan Praktis untuk Mendeteksi Bug dan Memastikan Keandalan Kode
  10. Menghasilkan Angka Acak di Java: Panduan Praktis dengan Random dan Math.random