java arraylist how declare
Αυτό το σεμινάριο εξηγεί τον τρόπο δήλωσης, αρχικοποίησης και εκτύπωσης Java ArrayList με παραδείγματα κώδικα. Θα μάθετε επίσης για το 2D Arraylist & την εφαρμογή του ArrayList στην Java:
Το Java Collections Framework και η διεπαφή λίστας επεξηγήθηκαν λεπτομερώς στα προηγούμενα σεμινάρια μας. Το ArrayList είναι μια δομή δεδομένων που αποτελεί μέρος του Συλλογικού Πλαισίου και μπορεί να θεωρηθεί παρόμοια με πίνακες και διανύσματα.
Το ArrayList μπορεί να γίνει αντιληπτό ως μια δυναμική συστοιχία που σας επιτρέπει να προσθέτετε ή να αφαιρείτε στοιχεία από αυτό ανά πάσα στιγμή ή απλά να το λέτε δυναμικά.
=> Ρίξτε μια ματιά στον Οδηγό για αρχάριους Java εδώ.
Με άλλα λόγια, το μέγεθός του μπορεί να αυξηθεί ή να μειωθεί δυναμικά σε αντίθεση με συστοιχίες των οποίων το μέγεθος παραμένει στατικό μόλις δηλωθεί.
Τι θα μάθετε:
- Κατηγορία ArrayList στην Ιάβα
- συμπέρασμα
Κατηγορία ArrayList στην Ιάβα
Η δομή δεδομένων ArrayList στην Java αντιπροσωπεύεται από την τάξη ArrayList που αποτελεί μέρος του « java.util Πακέτο.
Η ιεραρχία για την τάξη ArrayList φαίνεται παρακάτω.
Όπως μπορείτε να δείτε, η κλάση ArrayList εφαρμόζει τη διεπαφή λίστας η οποία με τη σειρά της εκτείνεται από τη διεπαφή συλλογής.
Ο γενικός ορισμός της κατηγορίας ArrayList δίνεται παρακάτω:
public class ArrayList extends AbstractList implements List,RandomAccess, Cloneable, Serializable
Εδώ είναι μερικά από τα διακριτικά χαρακτηριστικά του ArrayList:
- Η κλάση ArrayList της Java αποθηκεύει στοιχεία διατηρώντας τη σειρά εισαγωγής.
- Το ArrayList επιτρέπει διπλά στοιχεία που είναι αποθηκευμένα σε αυτό.
- Το ArrayList δεν είναι συγχρονισμένο, το κύριο σημείο που διαφοροποιεί την ArrayList από την κλάση Vector στην Java.
- Το ArrayList στην Java είναι πιο πανομοιότυπο με το Vectors στο C ++.
- Το ArrayList στη Java χρησιμοποιεί επίσης δείκτες όπως πίνακες και υποστηρίζει τυχαία πρόσβαση.
- Οι λειτουργίες που χειρίζονται στοιχεία στο ArrayList είναι αργές καθώς πρέπει να γίνουν πολλές αλλαγές στοιχείων, εάν κάποιο στοιχείο πρόκειται να αφαιρεθεί από το ArrayList.
- Η κλάση ArrayList δεν μπορεί να περιέχει πρωτόγονους τύπους αλλά μόνο αντικείμενα. Σε αυτήν την περίπτωση, συνήθως το αποκαλούμε «ArrayList of Objects». Επομένως, εάν θέλετε να αποθηκεύσετε ακέραιο τύπο στοιχείων, τότε πρέπει να χρησιμοποιήσετε το αντικείμενο Integer της κατηγορίας περιτυλίγματος και όχι τον πρωτόγονο τύπο int.
Δημιουργία και δήλωση ArrayList
Για να χρησιμοποιήσετε την τάξη ArrayList στο πρόγραμμά σας, πρέπει να την συμπεριλάβετε πρώτα στο πρόγραμμά σας χρησιμοποιώντας την οδηγία «εισαγωγή» όπως φαίνεται παρακάτω:
import java.util.ArrayList;
Ή
import java.util.*; //this will include all classes from java.util package
Μόλις εισαγάγετε την τάξη ArrayList στο πρόγραμμά σας, μπορείτε να δημιουργήσετε ένα αντικείμενο ArrayList.
Η γενική σύνταξη δημιουργίας ArrayList είναι:
ArrayList arrayList = new ArrayList ();
Εκτός από την παραπάνω δήλωση που χρησιμοποιεί τον προεπιλεγμένο κατασκευαστή, η κλάση ArrayList παρέχει επίσης άλλους υπερφορτωμένους κατασκευαστές που μπορείτε να χρησιμοποιήσετε για να δημιουργήσετε το ArrayList.
Μέθοδοι κατασκευαστή
Η κλάση ArrayList στην Java παρέχει τις ακόλουθες μεθόδους κατασκευαστή για τη δημιουργία του ArrayList.
Μέθοδος # 1: ArrayList ()
Αυτή η μέθοδος χρησιμοποιεί τον προεπιλεγμένο κατασκευαστή της κατηγορίας ArrayList και χρησιμοποιείται για τη δημιουργία ενός κενού ArrayList.
Η γενική σύνταξη αυτής της μεθόδου είναι:
ArrayList list_name = new ArrayList();
Για παράδειγμα, Μπορείτε να δημιουργήσετε ένα γενικό ArrayList τύπου String χρησιμοποιώντας την ακόλουθη δήλωση.
ArrayList arraylist = new ArrayList();
Αυτό θα δημιουργήσει ένα κενό ArrayList που ονομάζεται «λίστα συστοιχιών» τύπου String.
Μέθοδος # 2: ArrayList (int ικανότητα)
Αυτός ο υπερφορτωμένος κατασκευαστής μπορεί να χρησιμοποιηθεί για τη δημιουργία ενός ArrayList με το καθορισμένο μέγεθος ή χωρητικότητα που παρέχεται ως επιχείρημα στον κατασκευαστή.
Η γενική σύνταξη αυτής της μεθόδου είναι:
ArrayList list_name = new ArrayList(int capacity);
Παράδειγμα:
ArrayList arraylist = new ArrayList(10);
Η παραπάνω δήλωση δημιουργεί ένα άδειο ArrayList που ονομάζεται «arraylist» τύπου Integer με χωρητικότητα 10.
Μέθοδος # 3: ArrayList (Συλλογή γ)
Ο τρίτος υπερφορτωμένος κατασκευαστής για την κατηγορία ArrayList παίρνει μια ήδη υπάρχουσα συλλογή ως επιχείρημα και δημιουργεί μια ArrayList με τα στοιχεία από την καθορισμένη συλλογή c ως αρχικά στοιχεία.
Η γενική σύνταξη για την προετοιμασία του ArrayList χρησιμοποιώντας αυτόν τον κατασκευαστή είναι:
ArrayList list_name = new ArrayList (Collection c)
Για παράδειγμα, Εάν το intList είναι μια υπάρχουσα συλλογή με στοιχεία {10,20,30,40,50}, τότε η ακόλουθη δήλωση θα δημιουργήσει μια λίστα «λίστα πίνακα» με τα περιεχόμενα του intList ως αρχικά στοιχεία.
ArrayList ArrayList = new ArrayList(intList);
Η τάξη ArrayList υποστηρίζει επίσης διάφορες μεθόδους που μπορούν να χρησιμοποιηθούν για τον χειρισμό των περιεχομένων της λίστας. Θα συζητήσουμε λεπτομερώς αυτές τις μεθόδους στο επερχόμενο σεμινάριό μας «ArrayList Methods in Java».
Αρχικοποιήστε το ArrayList στη Java
Μόλις δημιουργηθεί το ArrayList, υπάρχουν πολλοί τρόποι για να αρχικοποιήσετε το ArrayList με τιμές. Σε αυτήν την ενότητα, θα συζητήσουμε αυτούς τους τρόπους.
# 1) Χρήση του Arrays.asList
Εδώ, μπορείτε να περάσετε ένα Array που έχει μετατραπεί σε Λίστα χρησιμοποιώντας τη μέθοδο asList της κλάσης Arrays για να αρχικοποιήσετε το ArrayList.
Γενική σύνταξη:
ArrayList arrayListName = new ArrayList( Arrays.asList (Object o1, Object o2, …, Object on));
Παράδειγμα:
import java.util.*; public class Main { public static void main(String args()) { //create and initialize ArrayList object myList with Arrays.asList method ArrayList myList = new ArrayList( Arrays.asList('One', 'Two', 'Three')); //print the ArrayList System.out.println('List contents:'+myList); } }
Παραγωγή:
# 2) Χρήση μεθόδου ανώνυμης εσωτερικής τάξης
Εδώ χρησιμοποιούμε την ανώνυμη εσωτερική κλάση για να αρχικοποιήσουμε το ArrayList σε τιμές.
Η γενική σύνταξη για τη χρήση μιας ανώνυμης εσωτερικής κλάσης για την προετοιμασία του ArrayList έχει ως εξής:
ArrayListarraylistName = new ArrayList(){{ add(Object o1); add (Object o2);… add (Object on);}};
Παράδειγμα:
import java.util.*; public class Main { public static void main(String args()) { //create and initialize ArrayList with anonymous inner class calls ArrayList colors = new ArrayList(){{ add('Red'); add('Blue'); add('Purple'); }}; //print the ArrayList System.out.println('Content of ArrayList:'+colors); } }
Παραγωγή:
# 3) Χρήση της μεθόδου προσθήκης
Αυτή είναι η κοινή μέθοδος για την προσθήκη στοιχείων σε οποιαδήποτε συλλογή.
Η γενική σύνταξη για τη χρήση της μεθόδου προσθήκης για την προσθήκη στοιχείων στο ArrayList είναι:
ArrayListArraylistName = new ArrayList(); ArraylistName.add(value1); ArraylistName.add(value2); ArraylistName.add(value3);
Παράδειγμα προγραμματισμού:
import java.util.*; public class Main { public static void main(String args()) { //create ArrayList ArrayList colors = new ArrayList(); //add elements to the ArrayList using add method colors.add('Red'); colors.add('Green'); colors.add('Blue'); colors.add('Orange'); //print the ArrayList System.out.println('Content of ArrayList:'+colors); }
Παραγωγή:
# 4) Χρήση της μεθόδου Collection.nCopies
Αυτή η μέθοδος χρησιμοποιείται για την προετοιμασία του ArrayList με τις ίδιες τιμές. Παρέχουμε τον αριθμό των στοιχείων που θα αρχικοποιηθούν και την αρχική τιμή της μεθόδου.
Η γενική σύνταξη της αρχικοποίησης είναι:
ArrayList arrayListName = new ArrayList(Collections.nCopies(count, element));
Το παρακάτω παράδειγμα δείχνει την αρχικοποίηση του Array χρησιμοποιώντας τη μέθοδο Collections.nCopies.
import java.util.*; public class Main { public static void main(String args()) { //create ArrayList with 10 elements //initialized to value 10 using Collections.nCopies ArrayList intList = new ArrayList(Collections.nCopies(10,10)); //print the ArrayList System.out.println('Content of ArrayList:'+intList); } }
Παραγωγή:
Επανάληψη μέσω ArrayList
Έχουμε τους ακόλουθους τρόπους για να διασχίσουμε ή να βρούμε το ArrayList:
- Χρήση για βρόχο
- Από για κάθε βρόχο (ενισχυμένο για βρόχο).
- Χρήση της διεπαφής Iterator.
- Ανά διεπαφή ListIterator.
- Με τη μέθοδο forEachRemaining ().
Στην πραγματικότητα, αυτές οι μέθοδοι χρησιμοποιούνται για επαναλήψεις μέσω συλλογών γενικά. Θα δούμε παραδείγματα καθεμιάς από τις μεθόδους σε σχέση με το ArrayList σε αυτό το σεμινάριο.
# 1) Χρήση για βρόχο
Ένα ευρετήριο με βάση το βρόχο μπορεί να χρησιμοποιηθεί για να διασχίσει το ArrayList και να εκτυπώσει τα στοιχεία του.
Ακολουθεί ένα παράδειγμα για να διασχίσετε και να εκτυπώσετε το ArrayList χρησιμοποιώντας για βρόχο.
import java.util.*; public class Main { public static void main(String() args) { //create a list List intList = new ArrayList(); intList.add(10); intList.add(20); intList.add(30); intList.add(40); intList.add(50); //create & initialize a new ArrayList with previous list ArrayList arraylist = new ArrayList(intList); System.out.println('Contents of ArrayList using for-loop:'); //use for loop to traverse through its elements and print it for(int i=0;i Παραγωγή:

Αυτός είναι ο απλούστερος και ευκολότερος τρόπος για να διασχίσετε και να εκτυπώσετε τα στοιχεία του ArrayList και λειτουργεί με τον ίδιο τρόπο και σε άλλες συλλογές.
# 2) Για κάθε βρόχο (βελτιωμένο για βρόχο)
Μπορείτε επίσης να διασχίσετε το ArrayList χρησιμοποιώντας έναν βρόχο για κάθε βρόχο ή τον ενισχυμένο βρόχο. Πριν από την Java 8, δεν περιλάμβανε εκφράσεις λάμδα. Αλλά από την Java 8 και μετά, μπορείτε επίσης να συμπεριλάβετε εκφράσεις Lambda στο βρόχο για κάθε βρόχο.
Το παρακάτω πρόγραμμα δείχνει την εγκάρσια και εκτύπωση του ArrayList χρησιμοποιώντας για κάθε βρόχο και έκφραση λάμδα.
import java.util.*; public class Main { public static void main(String() args) { //create a list List intList = new ArrayList(); intList.add(10); intList.add(20); intList.add(30); intList.add(40); intList.add(50); //create & initialize a new ArrayList with previous list ArrayList arraylist = new ArrayList(intList); System.out.println('Contents of ArrayList using for-each loop:'); //use for-each loop to traverse through its elements and print it intList.forEach(val ->{ System.out.print(val + ' '); }); } }
Παραγωγή:

# 3) Χρήση διεπαφής Iterator
Έχουμε δει λεπτομερώς τη διεπαφή Iterator στα προηγούμενα θέματα μας. Η διεπαφή Iterator μπορεί να χρησιμοποιηθεί για την επανάληψη μέσω του ArrayList και την εκτύπωση των τιμών της.
Το παρακάτω πρόγραμμα το δείχνει.
import java.util.*; public class Main { public static void main(String() args) { //create a list List intList = new ArrayList(); intList.add(5); intList.add(10); intList.add(15); intList.add(20); intList.add(25); //create & initialize a new ArrayList with previous list ArrayList arraylist = new ArrayList(intList); System.out.println('Contents of ArrayList using Iterator interface:'); //Traverse through the ArrayList using iterator Iterator iter=arraylist.iterator(); while(iter.hasNext()){ System.out.print(iter.next() + ' '); } } }
Παραγωγή:

# 4) Με διασύνδεση ListIterator
Μπορείτε επίσης να διασχίσετε το ArrayList χρησιμοποιώντας το ListIterator. Το ListIterator μπορεί να χρησιμοποιηθεί για να διασχίσει το ArrayList τόσο προς τα εμπρός όσο και προς τα πίσω.
Ας εφαρμόσουμε ένα πρόγραμμα Java που δείχνει ένα παράδειγμα χρήσης του ListIterator.
import java.util.*; class Main{ public static void main(String args()){ //create a list and initiliaze it List colors_list=new ArrayList();//Creating arraylist colors_list.add('Red'); colors_list.add('Green'); colors_list.add('Blue'); colors_list.add('Cyan'); colors_list.add('Magenta'); colors_list.add('Yellow'); System.out.println('The contents of the list using ListIterator:'); //Traverse the list using ListIterator ListIterator color_iter=colors_list.listIterator(colors_list.size()); while(color_iter.hasPrevious()) { String str=color_iter.previous(); System.out.print(str + ' '); } } }
Παραγωγή:

Όπως μπορείτε να δείτε από την έξοδο, στο παραπάνω πρόγραμμα το ArrayList διασχίζεται προς τα πίσω χρησιμοποιώντας τις μεθόδους hasPre sebelumnya () και προηγούμενες () του ListIterator.
# 5) Με τη μέθοδο forEachRemaining ()
Αυτή είναι μια από τις μεθόδους για να διασχίσετε το ArrayList και είναι διαθέσιμη από το Java 8.
Το παρακάτω πρόγραμμα δείχνει τη μέθοδο forEachRemaining () για να διασχίσετε το ArrayList.
import java.util.*; class Main{ public static void main(String args()){ //create a list and initiliaze it List colors_list=new ArrayList(); colors_list.add('Red'); colors_list.add('Green'); colors_list.add('Blue'); colors_list.add('Cyan'); colors_list.add('Magenta'); colors_list.add('Yellow'); System.out.println('The contents of the list using forEachRemaining() method:'); //Traverse the list using forEachRemaining () method Iterator itr=colors_list.iterator(); itr.forEachRemaining(val-> //lambda expression { System.out.print(val + ' '); }); } }
Παραγωγή:

ποιο είναι το καλύτερο δωρεάν πρόγραμμα λήψης μουσικής;
Χρησιμοποιούμε τη μέθοδο forEachRemaining () μαζί με έναν Iterator. Είναι παρόμοιο με το καθένα και χρησιμοποιούμε έκφραση λάμδα σε αυτήν τη μέθοδο.
Παράδειγμα Java ArrayList
Σε αυτήν την ενότητα, θα δούμε την εφαρμογή ArrayList στην Java. Για παράδειγμα, θα εφαρμόσουμε ένα πλήρες παράδειγμα από τη δημιουργία, την προετοιμασία και τη χρήση Java ArrayList για την εκτέλεση διαφόρων χειρισμών.
import java.util.ArrayList; class Main { public static void main(String() args) { //Creating a generic ArrayList ArrayList newList = new ArrayList(); //Size of arrayList System.out.println('Original size of ArrayList at creation: ' + newList.size()); //add elements to it newList.add('IND'); newList.add('USA'); newList.add('AUS'); newList.add('UK'); //print the size after adding elements System.out.println('ArrayList size after adding elements: ' + newList.size()); //Print ArrayList contents System.out.println('Contents of the ArrayList: ' + newList); //Remove an element from the list newList.remove('USA'); System.out.println('ArrayList contents after removing element(USA): ' + newList); //Remove another element by index newList.remove(2); System.out.println('ArrayList contents after removing element at index 2: ' + newList); //print new size System.out.println('Size of arrayList: ' + newList.size()); //print list contents System.out.println('Final ArrayList Contents: ' + newList); } }
Παραγωγή:

Δισδιάστατη λίστα Array στη Java
Γνωρίζουμε ότι ένα ArrayList δεν έχει διαστάσεις όπως το Arrays. Αλλά μπορούμε να έχουμε ένθετα ArrayLists που ονομάζονται επίσης «2D ArrayLists» ή «ArrayList of ArrayLists».
Η απλή ιδέα πίσω από αυτά τα ένθετα ArrayLists είναι ότι δεδομένου ενός ArrayList, κάθε στοιχείο αυτού του ArrayList είναι ένα άλλο ArrayList.
Ας το κατανοήσουμε χρησιμοποιώντας το ακόλουθο πρόγραμμα.
import java.util.*; public class Main { public static void main(String() args) { int num = 3; // declare an arrayList of ArrayLists or 2D ArrayList ArrayList intList = new ArrayList (num); // Create individual elements or ArrayLists and add them to intList as elements ArrayList list_elem1 = new ArrayList(); list_elem1.add(10); intList.add(list_elem1); ArrayList list_elem2 = new ArrayList(); list_elem2.add(20); list_elem2.add(30); intList.add(list_elem2); ArrayList list_elem3 = new (); list_elem3.add(40); list_elem3.add(50); list_elem3.add(60); intList.add(list_elem3); System.out.println('Contents of 2D ArrayList(Nested ArrayList):'); //print the 2D ArrayList or nested ArrayList for (int i = 0; i Παραγωγή:

Το παραπάνω πρόγραμμα δείχνει 2D ArrayList. Εδώ, πρώτα, δηλώνουμε μια ArrayList of ArrayLists. Στη συνέχεια, ορίζουμε μεμονωμένες ArrayLists που θα λειτουργούν ως μεμονωμένα στοιχεία του ένθετου ArrayList όταν προσθέτουμε καθένα από αυτά τα ArrayLists στο Nested ArrayList.
Για πρόσβαση σε κάθε στοιχείο του ArrayList, πρέπει να καλέσουμε τη μέθοδο get get δύο φορές. Πρώτα για πρόσβαση στη σειρά του Nested ArrayList και στη συνέχεια για πρόσβαση στην ατομική διασταύρωση της γραμμής και της στήλης.
Σημειώστε ότι μπορείτε να αυξήσετε τα ένθετα επίπεδα του ArrayList για να ορίσετε πολυδιάστατες ArrayLists. Για παράδειγμα, Το 3D ArrayList θα έχει 2D ArrayLists ως στοιχεία του και ούτω καθεξής.
Συχνές Ερωτήσεις
Q # 1) Τι είναι το ArrayList στη Java;
Απάντηση: Ένα ArrayList στη Java είναι ένας δυναμικός πίνακας. Έχει δυνατότητα αλλαγής μεγέθους, δηλαδή αυξάνεται σε μέγεθος όταν προστίθενται νέα στοιχεία και συρρικνώνεται όταν διαγράφονται στοιχεία.
Q # 2) Ποια είναι η διαφορά μεταξύ του Array και του ArrayList;
Απάντηση: Το Array είναι σε στατική δομή και το μέγεθός του δεν μπορεί να αλλάξει μόλις δηλωθεί. Το ArrayList είναι μια δυναμική συστοιχία και αλλάζει το μέγεθός της όταν προστίθενται ή αφαιρούνται στοιχεία.
Ο πίνακας είναι μια βασική δομή στην Java, ενώ ένας ArrayList είναι μέρος του Συλλογικού Πλαισίου στην Java. Μια άλλη διαφορά είναι ότι ενώ το Array χρησιμοποιεί συνδρομητή (()) για πρόσβαση σε στοιχεία, το ArrayList χρησιμοποιεί μεθόδους για να έχει πρόσβαση στα στοιχεία του.
Q # 3) Είναι η λίστα ArrayList;
Απάντηση: Το ArrayList είναι ένας υποτύπος της λίστας. Το ArrayList είναι μια τάξη ενώ η Λίστα είναι μια διεπαφή.
Q # 4) Είναι το ArrayList μια συλλογή;
Απάντηση: Όχι. Το ArrayList είναι μια εφαρμογή της Συλλογής που είναι μια διεπαφή.
Q # 5) Πώς αυξάνει το ArrayList το μέγεθός του;
Απάντηση: Εσωτερικά το ArrayList εφαρμόζεται ως Array. Το ArrayList έχει μια παράμετρο μεγέθους. Όταν τα στοιχεία προστίθενται στο ArrayList και επιτευχθεί η τιμή μεγέθους, το ArrayList προσθέτει εσωτερικά έναν άλλο πίνακα για να φιλοξενήσει νέα στοιχεία.
συμπέρασμα
Αυτό ήταν το σεμινάριο για τα βασικά της τάξης ArrayList στην Java. Έχουμε δει τη δημιουργία και την προετοιμασία της κατηγορίας ArrayList μαζί με μια λεπτομερή εφαρμογή προγραμματισμού του ArrayList.
Συζητήσαμε επίσης 2D και πολυδιάστατες ArrayLists. Η τάξη ArrayList υποστηρίζει τις διάφορες μεθόδους που μπορούμε να χρησιμοποιήσουμε για τον χειρισμό των στοιχείων. Στα επερχόμενα σεμινάρια μας, θα ακολουθήσουμε αυτές τις μεθόδους.
=> Διαβάστε μέσω της σειράς Easy Java Training.
Συνιστώμενη ανάγνωση
- Java Array - Δήλωση, δημιουργία και αρχικοποίηση μιας σειράς στην Java
- Java Array - Πώς να εκτυπώσετε στοιχεία ενός πίνακα στην Java;
- Ανάπτυξη Java: Δημιουργία και εκτέλεση αρχείου Java JAR
- Λίστα Java - Τρόπος δημιουργίας, αρχικοποίησης και χρήσης λίστας στην Java
- Java Virtual Machine: Πώς βοηθά το JVM στην εκτέλεση της εφαρμογής Java
- Σειρά αντικειμένων στην Java: Πώς να δημιουργήσετε, να αρχικοποιήσετε και να χρησιμοποιήσετε
- Πρόσβαση τροποποιητών σε Java - Εκμάθηση με παραδείγματα
- Εκμάθηση Java Reflection με παραδείγματα