Σε αυτό το πρόγραμμα, θα μάθετε να συνδυάζετε δύο πίνακες στην Java χρησιμοποιώντας arraycopy και χωρίς αυτό.
Για να κατανοήσετε αυτό το παράδειγμα, θα πρέπει να γνωρίζετε τις ακόλουθες εφαρμογές προγραμματισμού Java:
- Πίνακες Java
- Java για κάθε βρόχο
Παράδειγμα 1: Συνδυάστε δύο συστοιχίες χρησιμοποιώντας arraycopy
import java.util.Arrays; public class Concat ( public static void main(String() args) ( int() array1 = (1, 2, 3); int() array2 = (4, 5, 6); int aLen = array1.length; int bLen = array2.length; int() result = new int(aLen + bLen); System.arraycopy(array1, 0, result, 0, aLen); System.arraycopy(array2, 0, result, aLen, bLen); System.out.println(Arrays.toString(result)); ) )
Παραγωγή
(1, 2, 3, 4, 5, 6)
Στο παραπάνω πρόγραμμα, έχουμε δύο ακέραιους πίνακες array1 και array2.
Για να συνδυάσουμε (συνδυασμένες) δύο συστοιχίες, βρίσκουμε το μήκος του αποθηκευμένο σε aLen και bLen αντίστοιχα. Στη συνέχεια, δημιουργούμε ένα νέο αποτέλεσμα ακέραιου πίνακα με μήκος aLen + bLen.
Τώρα, για να συνδυάσουμε και τα δύο, αντιγράφουμε κάθε στοιχείο και στις δύο συστοιχίες ώστε να προκύπτει χρησιμοποιώντας τη arraycopy()
συνάρτηση.
Η arraycopy(array1, 0, result, 0, aLen)
συνάρτηση, με απλούς όρους, λέει στο πρόγραμμα να αντιγράψει το array1 ξεκινώντας από ευρετήριο 0
σε αποτέλεσμα από ευρετήριο 0
σε aLen.
Παρομοίως, για arraycopy(array2, 0, result, aLen, bLen)
λέει στο πρόγραμμα να αντιγράψει τον πίνακα 2 ξεκινώντας από ευρετήριο 0
σε result
από ευρετήριο aLen έως bLen.
Παράδειγμα 2: Συνδυασμός δύο συστοιχιών χωρίς τη χρήση συστοιχιών
import java.util.Arrays; public class Concat ( public static void main(String() args) ( int() array1 = (1, 2, 3); int() array2 = (4, 5, 6); int length = array1.length + array2.length; int() result = new int(length); int pos = 0; for (int element : array1) ( result(pos) = element; pos++; ) for (int element : array2) ( result(pos) = element; pos++; ) System.out.println(Arrays.toString(result)); ) )
Παραγωγή
(1, 2, 3, 4, 5, 6)
Στο παραπάνω πρόγραμμα, αντί να το χρησιμοποιούμε arraycopy
, αντιγράφουμε με μη αυτόματο τρόπο κάθε στοιχείο και των δύο συστοιχιών array1 και array2 στο αποτέλεσμα.
Αποθηκεύουμε το συνολικό μήκος που απαιτείται για το αποτέλεσμα, δηλαδή array1.length + array2. length
. Στη συνέχεια, δημιουργούμε ένα νέο αποτέλεσμα πίνακα μήκους.
Τώρα, χρησιμοποιούμε το για κάθε βρόχο για να επαναλάβουμε κάθε στοιχείο του πίνακα 1 και να το αποθηκεύσουμε στο αποτέλεσμα. Μετά την εκχώρηση αυτή, θα αυξήσει τις pos θέση 1, pos++
.
Ομοίως, κάνουμε το ίδιο για τον πίνακα 2 και αποθηκεύουμε κάθε στοιχείο στο αποτέλεσμα ξεκινώντας από τη θέση μετά τον πίνακα1.