Алгоритми 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 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); ) ) 

Вихідні дані

 Несортований ArrayList: (4, 2, 3) Відсортований ArrayList: (2, 3, 4) 

Тут сортування відбувається у природному порядку (за зростанням). Однак ми можемо налаштувати порядок сортування sort()методу за допомогою інтерфейсу Comparator.

Щоб дізнатись більше, відвідайте Java Sorting.

2. Перетасовка за допомогою перетасовки ()

shuffle()Метод рамок колекції Java використовується для знищення будь-якого роду порядку , присутніх в структурі даних. Це робить прямо протилежне сортуванню. Наприклад,

 import java.util.ArrayList; import java.util.Collections; class Main ( public static void main(String() args) ( // Creating an array list ArrayList 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); ) ) 

Вихідні дані

 Відсортований ArrayList: (1, 2, 3) ArrayList за допомогою перетасовки: (2, 1, 3) 

Коли ми запускаємо програму, shuffle()метод повертає випадковий результат.

Алгоритм перетасовки в основному використовується в іграх, де ми хочемо випадковий результат.

3. Звичайна маніпуляція даними

На Java рамки колекцій надають різні методи, якими можна керувати даними.

  • reverse() - змінює порядок елементів
  • fill() - замінити кожен елемент у колекції вказаним значенням
  • copy() - створює копію елементів із зазначеного джерела до місця призначення
  • swap() - міняє місцями два елементи в колекції
  • addAll() - додає всі елементи колекції до іншої колекції

Наприклад,

 import java.util.Collections; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an ArrayList ArrayList 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 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) Зворотний ArrayList1: (2, 1) ArrayList1 за допомогою swap (): (1, 2) ArrayList2 за допомогою addALl (): (1, 2) ArrayList1 за допомогою fill (): (0, 0) ArrayList2 за допомогою 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 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); ) ) 

Вихідні дані

 Позиція 3 - 2. 

Примітка : Колекцію слід відсортувати перед виконанням binarySearch()методу.

Щоб дізнатись більше, відвідайте Java Binary Search.

5. Склад

  • frequency() - повертає кількість разів, коли елемент присутній у колекції
  • disjoint() - перевіряє, чи дві колекції містять якийсь загальний елемент

Наприклад,

 import java.util.Collections; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an ArrayList ArrayList 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 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) Кількість 2: 2 ArrayList2: (5, 6) Два списки несумісні: true 

6. Пошук граничних цінностей

Методи min()and і max()колекції Java-колекцій використовуються для пошуку мінімуму та максимуму елементів відповідно. Наприклад,

 import java.util.Collections; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an ArrayList ArrayList 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); ) ) 

Вихідні дані

 Мінімальний елемент: 1 Максимальний елемент: 3 

Цікаві статті...