# Πώς να χρησιμοποιήσετε το Java ArrayList

**Το ArrayList** είναι μία από τις πιο χρησιμοποιούμενες δομές δεδομένων στη Java. Σας επιτρέπει να τροποποιείτε δυναμικά και να αποθηκεύετε μια συλλογή αντικειμένων. Σε αυτό το σεμινάριο, σας παρουσιάζουμε τη σύνταξη του Java ArrayList και σας εξηγούμε πότε να το χρησιμοποιείτε.

## Ποια είναι η διαφορά μεταξύ ArrayList και Array στη Java;

Το Java ArrayList είναι δυναμικό, πράγμα που σημαίνει ότι αυξάνεται και μειώνεται σε μέγεθος όταν προστίθενται ή αφαιρούνται στοιχεία. Αξίζει να σημειωθεί ότι η κλάση ArrayList αποτελεί μέρος του **Java Collections Framework** και δεν είναι διαθέσιμη εγγενώς. Σε αντίθεση με τους πίνακες, πρέπει να εισαχθεί από τη βιβλιοθήκη *java.util.*

Οι ArrayLists είναι μια κατάλληλη επιλογή όταν το μήκος μιας [λίστας Java](https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/lista-java/) ενδέχεται να ποικίλλει. Παραδείγματα περιλαμβάνουν την αποθήκευση αντικειμένων, **την αναζήτηση ή ταξινόμηση** δεδομένων και τη δημιουργία λιστών ή ουρών.

Αντίθετα, δεν είναι δυνατό να αλλάξετε το μέγεθος ενός πίνακα. Αυτό σημαίνει ότι ιδανικά θα πρέπει να γνωρίζετε εκ των προτέρων τον αριθμό των αντικειμένων που θα περιέχει ο πίνακας. Οι πίνακες είναι κατάλληλοι για τη διαχείριση ενός προκαθορισμένου συνόλου **πρωτότυπων τύπων δεδομένων**, όπως int, float, char ή Boolean.

Ένα μειονέκτημα των ArrayLists είναι ότι μπορεί **να χρειαστεί περισσότερος χρόνος για την πρόσβαση σε αυτά**. Ενώ οι πίνακες έχουν ένα σταθερό συνεχές μπλοκ μνήμης, τα αντικείμενα στα ArrayLists δεν αποθηκεύονται συνεχόμενα. Είναι σημαντικό να λάβετε υπόψη τα πλεονεκτήματα και τα μειονεκτήματα των δομών δεδομένων, ώστε να μπορείτε να επιλέξετε εκείνη που ταιριάζει καλύτερα στην περίπτωσή σας.

## Ποια είναι η σύνταξη για το Java ArrayList;

Πριν από τη δημιουργία του ArrayList, η αντίστοιχη κλάση πρέπει να εισαχθεί από τη βιβλιοθήκη *java.util*.

```Java
import java.util.ArrayList;
```

Η γενική σύνταξη είναι:

```Java
ArrayList<Type> arrayList= new ArrayList<>();
```

Ο όρος «τύπος» αναφέρεται στον αντίστοιχο τύπο δεδομένων στο Java ArrayList.

Το επόμενο βήμα είναι να δημιουργήσετε λίστες με `strings` και `integers` στοιχεία.

```Java
ArrayList<String> arrayList= new ArrayList<>();
```

```Java
ArrayList<Integer> arrayList= new ArrayList<>();
```

Οι ArrayLists χρησιμοποιούν την αντίστοιχη **κλάση περιτύλιξης** των πρωτόγονων τύπων δεδομένων, έτσι ώστε να αντιμετωπίζονται ως αντικείμενα. Αυτό σημαίνει ότι πρέπει να καθορίσετε `integer` αντί για `int`.

## Παραδείγματα μεθόδων Java ArrayList

Λειτουργίες όπως η προσθήκη ή η αφαίρεση στοιχείων δεν εκτελούνται σε ArrayLists με Java operators, αλλά μέσω **προκαθορισμένων μεθόδων**. Παρακάτω θα σας παρουσιάσουμε τις πιο συνηθισμένες μεθόδους ArrayList.

### Προσθήκη στοιχείων

Αφού δημιουργήσουμε το ArrayList «colours» (τύπου`String` ), θα προσθέσουμε διάφορα στοιχεία χρησιμοποιώντας τη μέθοδο `.add()`.

```Java
import java.util.ArrayList;
class Main {
    public static void main(String[] args){
        ArrayList<String> colours = new ArrayList<>();
        colours.add("blue");
        colours.add("red");
        colours.add("green");
        System.out.println("ArrayList: " + colours);
    }
}
```

Αυτό έχει ως αποτέλεσμα:

```Java
ArrayList: [blue, red, green]
```

### Αφαίρεση στοιχείων

Για να αφαιρέσουμε αντικείμενα από το Java ArrayList, χρησιμοποιούμε τη μέθοδο `.remove()` και καθορίζουμε τον δείκτη του στοιχείου.

```Java
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        ArrayList<String> colours = new ArrayList<>();
        colours.add("blue");
        colours.add("red");
        colours.add("green");
        System.out.println("ArrayList: " + colours);
        String colour = colours.remove(1);
        System.out.println("ArrayList: " + colours);
        System.out.println("Removed Element: " + colour);
    }
}
```

Η έξοδος εμφανίζει το τροποποιημένο ArrayList και το στοιχείο που έχει αφαιρεθεί:

```Java
ArrayList: [blue, green]
Removed Element: red
```

Όπως και στις περισσότερες γλώσσες προγραμματισμού, η μέτρηση στη Java ξεκινά από **το 0**. Αυτό σημαίνει ότι το στοιχείο που αφαιρέθηκε στον δείκτη 1 είναι `red`.

### Πρόσβαση σε στοιχεία στο Java ArrayList

Χρησιμοποιώντας τη συνάρτηση `.get()`, μπορούμε να έχουμε πρόσβαση σε ένα στοιχείο σε μια συγκεκριμένη θέση.

```Java
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        ArrayList<String> clothes = new ArrayList<>();
        clothes.add("jacket");
        clothes.add("shirt");
        clothes.add("pullover");
        System.out.println("ArrayList: " + clothes);
        String str = clothes.get(2);
        System.out.print("Element at index 2: " + str);
    }
}
```

Για την έξοδο έχουμε:

```Java
ArrayList: [jacket, shirt, pullover]
Element at index 2: pullover
```

### Αλλαγή στοιχείων

Με `.set()`, μπορούμε να αλλάξουμε ένα στοιχείο αναθέτοντας ένα νέο στοιχείο σε έναν συγκεκριμένο δείκτη.

```Java
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        ArrayList<String> colours = new ArrayList<>();
        colours.add("blue");
        colours.add("red");
        colours.add("green");
        System.out.println("ArrayList: " + colours);
        colours.set(2, "yellow");
        System.out.println("Modified ArrayList: " + colours);
    }
}
```

Τώρα βλέπουμε `yellow` αντί για `green` στον δείκτη 2:

```Java
ArrayList: [blue, red, green]
Modified ArrayList: [blue, red, yellow]
```

### Προσδιορισμός του μήκους του Java ArrayList

Ο αριθμός των στοιχείων στο ArrayList μπορεί εύκολα να υπολογιστεί χρησιμοποιώντας τη μέθοδο `.size()`.

```Java
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        ArrayList<String> colours = new ArrayList<>();
        colours.add("blue");
        colours.add("red");
        colours.add("green");
        System.out.println(colours.size());
    }
}
```

Αυτό είναι το αποτέλεσμα:

```Java
3
```

### Ταξινόμηση και επανάληψη μέσω ArrayList

Για να ταξινομήσετε το Java ArrayList, πρέπει να εισαχθεί η κλάση συλλογών. Για την επανάληψη, χρησιμοποιούμε έναν [βρόχο Java for-each](https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/java-for-each-brochos/). Για κάθε επανάληψη του βρόχου, το αντίστοιχο στοιχείο εξάγεται στην κονσόλα.

```Java
import java.util.ArrayList;
import java.util.Collections;
public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> ages = new ArrayList<Integer>();
        ages.add(20);
        ages.add(54);
        ages.add(17);
        ages.add(9);
        Collections.sort(ages);
        for (int i : ages) {
            System.out.println(i);
        }
    }
}
```

Τα στοιχεία του ArrayList εμφανίζονται από το μικρότερο προς το μεγαλύτερο:

```Java
9
17
20
54
```


This is a markdown version of: [https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/java-arraylist/](https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/java-arraylist/) for AI/LLM consumption.