# Τι είναι μια λίστα Java;

Οι λίστες Java είναι ιδιαίτερα κατάλληλες για σενάρια όπου το **μέγεθος ενός συνόλου δεδομένων** δεν είναι σαφές από την αρχή ή εάν το μέγεθος αναμένεται να αλλάξει με την πάροδο του χρόνου. Θα σας δείξουμε συγκεκριμένα παραδείγματα για το πώς να χρησιμοποιείτε τις λίστες Java, καθώς και τις λειτουργίες που μπορείτε να εκτελέσετε με αυτές.

## Σε τι μπορούν να χρησιμοποιηθούν οι λίστες Java;

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

Οι λίστες μπορούν να χρησιμοποιηθούν για εφαρμογές βάσεων δεδομένων. Εδώ χρησιμοποιούνται για την αποθήκευση και την πρόσβαση σε **μεγάλα σύνολα δεδομένων από ερωτήματα βάσεων δεδομένων**. Σε γραφικά περιβάλλοντα χρήστη, οι λίστες Java χρησιμοποιούνται συχνά για την εμφάνιση μιας λίστας στοιχείων, όπως επιλογές σε ένα αναπτυσσόμενο μενού ή διάφορα είδη σε ένα ηλεκτρονικό κατάστημα.

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

## Ποιες μεθόδους λίστας διαθέτει η Java;

Οι λίστες Java ανήκουν στη διεπαφή Collection και πρέπει να εισαχθούν από το πακέτο ***java.util***. Με [τις Java ArrayList](https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/java-arraylist/), LinkedList, Vector και Stack, υπάρχουν διάφορες κλάσεις υλοποίησης από τις οποίες μπορείτε να επιλέξετε. Μπορείτε να δηλώσετε τις διαφορετικές περιπτώσεις των λιστών με τον ακόλουθο κώδικα:

```Java
List linkedList = new LinkedList(); // LinkedList
List arrayList = new ArrayList(); // ArrayList
List vecList = new Vector(); // Vector
List stackList = new Stack(); //Stack
```

Ακολουθούν μερικές από τις πιο σημαντικές μεθόδους που μπορείτε να χρησιμοποιήσετε για τις λίστες Java:

1. `int size()`: Προσδιορίζει τον αριθμό των στοιχείων σε μια λίστα
2. `void add(int index, E element)`: Προσθέτει ένα στοιχείο σε μια συγκεκριμένη θέση
3. `boolean isEmpty()`: Ελέγχει αν μια λίστα είναι κενή
4. `void clear()`: Αφαιρεί όλα τα στοιχεία από μια λίστα
5. `boolean contains(Object o)`: Επιστρέφει την τιμή `true`, εάν το αντικείμενο `o` βρίσκεται στη λίστα
6. `boolean add(E e)`: Προσθέτει ένα στοιχείο στο τέλος μιας λίστας
7. `boolean remove(Object o)`: Αφαιρεί την πρώτη εμφάνιση ενός στοιχείου
8. `E get(int index)`: Αντικαθιστά ή εισάγει ένα στοιχείο σε έναν καθορισμένο δείκτη
9. `E set(int index, E element)`: Αντικαθιστά ή εισάγει ένα στοιχείο σε έναν καθορισμένο δείκτη
10. `Object[] toArray()`: Επιστρέφει έναν πίνακα που περιέχει τα στοιχεία από μια λίστα
11. `List<E> subList(int fromIndex, int toIndex)`: Συλλαμβάνει όλα τα στοιχεία εντός του καθορισμένου διαστήματος
12. `default void replaceAll(UnaryOperator<E> operator)`: Τυπική μέθοδος στη Java 8 που εφαρμόζει μονομερείς τελεστές Java σε κάθε στοιχείο και στη συνέχεια αντικαθιστά κάθε στοιχείο με το αποτέλεσμα της πράξης.

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

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

### Μετατροπή πίνακα σε λίστα

Για να μετατρέψετε έναν πίνακα σε λίστα, μπορείτε να επαναλάβετε τον πίνακα χρησιμοποιώντας βρόχους και να προσθέσετε τα στοιχεία στη λίστα ένα προς ένα χρησιμοποιώντας τη μέθοδο `add()`.

```Java
import java.util.*;
    public class ArrayToList{
      public static void main(String args[]){
      // Creating Array
      String[] colors={"blue","green","red","yellow"};
      System.out.println("Array: "+Arrays.toString(colors));
      //Converting Array to List
      List<String> list=new ArrayList<String>();
      for(String color: colors){
        list.add(color);
      }
      System.out.println("List: "+list);
      }
    }
```

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

```Java
Array: [blue, green, red, yellow]
List: [blue, green, red, yellow]
```

### Μετατροπή λίστας σε πίνακα

Με τη μέθοδο `toArray()`, μπορείτε να μετατρέψετε μια λίστα σε πίνακα:

```Java
import java.util.*;
    public class ListToArray{
      public static void main(String args[]){
       List<String> days = new ArrayList<String>();
       days.add("Monday");
       days.add("Tuesday");
       days.add("Wednesday");
       days.add("Thursday");
       days.add("Friday");
       days.add("Saturday");
       days.add("Sunday");
       // Converting ArrayList to Array
       String[] array = days.toArray(new String[days.size()]);
       System.out.println("Array: "+Arrays.toString(array));
       System.out.println("List: "+days);
      }
    }
```

Στην έξοδο, μπορείτε να δείτε ότι τα στοιχεία του πίνακα και της λίστας είναι πανομοιότυπα:

```Java
Array: [Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday]
List: [Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday]
```

### Κλήση και αλλαγή στοιχείων σε μια λίστα Java

Με τη μέθοδο `get()`, μπορείτε να αποκτήσετε πρόσβαση σε ένα στοιχείο σε έναν συγκεκριμένο δείκτη. Η μέθοδος `set()` σας επιτρέπει **να αντικαταστήσετε ένα στοιχείο με ένα διαφορετικό στοιχείο** σε μια συγκεκριμένη θέση στη λίστα.

```Java
import java.util.*;
    public class ListExample{
      public static void main(String args[]){
      // Creating a List
      List<String> letters=new ArrayList<String>();
      // Adding elements
      letters.add("a");
      letters.add("b");
      letters.add("c");
      // get()
      System.out.println("Element at index 1: "+letters.get(1));
      // set()
      letters.set(2, "d");
      for(String letter: letters)
      System.out.println(letter);
      }
    }
```

Δεδομένου ότι η μέτρηση στη Java ξεκινά με τον δείκτη 0, έχουμε το ακόλουθο αποτέλεσμα:

```Java
Element at index 1: b
a
b
d
```

### Ταξινόμηση λίστας

Μπορείτε να ταξινομήσετε μια λίστα Java χρησιμοποιώντας τη μέθοδο `.sort()` από την κλάση Collections. Μπορείτε να επαναλάβετε τη λίστα χρησιμοποιώντας έναν βρόχο και να εκτυπώσετε τα στοιχεία στην κονσόλα ένα προς ένα:

```Java
import java.util.*;
    class SortArrayList{
      public static void main(String args[]){
      // Creating a list of numbers
      List<Integer> numbers=new ArrayList<Integer>();
      numbers.add(4);
      numbers.add(57);
      numbers.add(92);
      numbers.add(26);
      // Sorting
      Collections.sort(numbers);
      for(Integer number: numbers)
        System.out.println(number);
      }
    }
```

Οι αριθμοί στη λίστα Java εμφανίζονται στην οθόνη από τον μικρότερο προς τον μεγαλύτερο:

```Java
4
26
57
92
```


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