Java-algoritmen
Java-algoritmen
In deze zelfstudie leren we met behulp van voorbeelden over verschillende algoritmen die door het Java-verzamelingsraamwerk worden geboden.
Het Java-verzamelingsraamwerk biedt verschillende algoritmen die kunnen worden gebruikt om elementen te manipuleren die zijn opgeslagen in gegevensstructuren.
Algoritmen in Java zijn statische methoden die kunnen worden gebruikt om verschillende bewerkingen op verzamelingen uit te voeren.
Aangezien algoritmen op verschillende collecties kunnen worden gebruikt, worden deze ook wel generieke algoritmen genoemd .
Laten we eens kijken naar de implementatie van verschillende methoden die beschikbaar zijn in het collectiekader.
1. Sorteren met sort()
De sort()
methode die door het collecties-framework wordt geboden, wordt gebruikt om elementen te sorteren. Bijvoorbeeld,
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);
}
}
Uitvoer
Unsorted ArrayList: [4, 2, 3] Sorted ArrayList: [2, 3, 4]
Hier vindt de sortering plaats in natuurlijke volgorde (oplopende volgorde). We kunnen echter de sorteervolgorde van de sort()
. aanpassen methode met behulp van de vergelijkingsinterface .
Ga voor meer informatie naar Java Sorting.
2. Shuffle gebruiken shuffle()
De shuffle()
methode van het Java-verzamelingsraamwerk wordt gebruikt om elke vorm van orde in de gegevensstructuur te vernietigen. Het doet precies het tegenovergestelde van sorteren. Bijvoorbeeld,
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);
}
}
Uitvoer
Sorted ArrayList: [1, 2, 3] ArrayList using shuffle: [2, 1, 3]
Wanneer we het programma uitvoeren, wordt de shuffle()
methode zal een willekeurige uitvoer retourneren.
Het shuffling-algoritme wordt voornamelijk gebruikt in games waar we willekeurige uitvoer willen.
3. Routinematige gegevensmanipulatie
In Java biedt het verzamelingsframework verschillende methoden die kunnen worden gebruikt om gegevens te manipuleren.
reverse()
- keert de volgorde van elementen omfill()
- vervang elk element in een verzameling door de opgegeven waardecopy()
- maakt een kopie van elementen van de opgegeven bron naar de bestemmingswap()
- verwisselt de positie van twee elementen in een verzamelingaddAll()
- voegt alle elementen van een verzameling toe aan andere verzamelingen
Bijvoorbeeld,
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);
}
}
Uitvoer
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]
Opmerking :Tijdens het uitvoeren van de copy()
methode moeten beide lijsten even groot zijn.
4. Zoeken met binarySearch()
De binarySearch()
methode van het Java-verzamelingsraamwerk zoekt naar het opgegeven element. Het retourneert de positie van het element in de opgegeven verzamelingen. Bijvoorbeeld,
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);
}
}
Uitvoer
The position of 3 is 2.
Opmerking :De verzameling moet worden gesorteerd voordat de binarySearch()
. wordt uitgevoerd methode.
Ga voor meer informatie naar Java Binary Search.
5. Compositie
frequency()
- geeft de telling terug van het aantal keren dat een element in de verzameling aanwezig isdisjoint()
- controleert of twee collecties een gemeenschappelijk element bevatten
Bijvoorbeeld,
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);
}
}
Uitvoer
ArrayList1: [1, 2, 3, 2] Count of 2: 2 ArrayList2: [5, 6] Two lists are disjoint: true
6. Extreme waarden vinden
De min()
en max()
methoden van het Java-verzamelingsraamwerk worden gebruikt om respectievelijk de minimum- en maximumelementen te vinden. Bijvoorbeeld,
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);
}
}
Uitvoer
Minimum Element: 1 Maximum Element: 3
Java