Sobes.tech
Junior

Ποιες τυπικές λειτουργίες για εργασία με συλλογές στο Kotlin γνωρίζετε;

sobes.tech AI

Απάντηση από AI

Οι προεπιλεγμένες λειτουργίες για εργασία με συλλογές στο Kotlin είναι πολύ ποικίλες και επιτρέπουν την εκτέλεση πολλών λειτουργιών:

Μετασχηματιστικές λειτουργίες:

  • map: Μετατρέπει κάθε στοιχείο της συλλογής σε ένα νέο στοιχείο και επιστρέφει μια νέα συλλογή με τα αποτελέσματα.
  • flatMap: Μετατρέπει κάθε στοιχείο σε μια συλλογή στοιχείων και ενώνει όλες τις αποτελεσματικές συλλογές σε μία.
  • zip: Δημιουργεί ζεύγη από στοιχεία δύο συλλογών με ίσους δείκτες.
  • unzip: Διαχωρίζει μια συλλογή ζευγών σε δύο συλλογές.

Λειτουργίες φιλτραρίσματος:

  • filter: Επιστρέφει μια συλλογή που περιέχει μόνο στοιχεία που ικανοποιούν ένα δοσμένο προ predicate.
  • filterNotNull: Επιστρέφει μια νέα συλλογή που περιέχει μόνο μη-null στοιχεία.
  • filterIsInstance: Επιστρέφει μια συλλογή που περιέχει μόνο στοιχεία ενός συγκεκριμένου τύπου.
  • distinct: Επιστρέφει μια συλλογή με μοναδικά στοιχεία.
  • drop: Παραλείπει τα πρώτα N στοιχεία και επιστρέφει τα υπόλοιπα.
  • dropLast: Παραλείπει τα τελευταία N στοιχεία.
  • take: Παίρνει τα πρώτα N στοιχεία.
  • takeLast: Παίρνει τα τελευταία N στοιχεία.

Εντολές ταξινόμησης:

  • sorted: Επιστρέφει μια ταξινομημένη συλλογή με την φυσική σειρά.
  • sortedBy: Ταξινομεί τη συλλογή με βάση το αποτέλεσμα ενός δοσμένου επιλεγέα για κάθε στοιχείο.
  • sortedDescending: Ταξινομεί σε φθίνουσα φυσική σειρά.
  • sortedByDescending: Ταξινομεί σε φθίνουσα σειρά με βάση το αποτέλεσμα του επιλεγέα.
  • reversed: Αντιστρέφει τη σειρά των στοιχείων.

Εντολές συσσώρευσης (αναγωγής):

  • fold: Συρρικνώνει τη συλλογή σε μια τιμή εφαρμόζοντας μια λειτουργία σε έναν συσσωρευτή και κάθε στοιχείο, με μια αρχική τιμή.
  • reduce: Συρρικνώνει τη συλλογή σε μια τιμή, χρησιμοποιώντας το πρώτο στοιχείο ως αρχική.
  • sum: Υπολογίζει το άθροισμα όλων των αριθμητικών στοιχείων.
  • average: Υπολογίζει τον μέσο όρο των αριθμητικών στοιχείων.
  • count: Επιστρέφει τον αριθμό των στοιχείων.
  • maxOrNull: Επιστρέφει το μέγιστο στοιχείο ή null αν η συλλογή είναι κενή.
  • minOrNull: Το ελάχιστο στοιχείο ή null.
  • maxByOrNull: Το στοιχείο για το οποίο η επιλογέας επιστρέφει τη μέγιστη τιμή.
  • minByOrNull: Το στοιχείο για το οποίο η επιλογέας επιστρέφει τη ελάχιστη τιμή.

Εντολές αναζήτησης στοιχείων:

  • find: Επιστρέφει το πρώτο στοιχείο που ικανοποιεί το δοσμένο προ predicate ή null.
  • findLast: Το τελευταίο στοιχείο που ικανοποιεί το predicate.
  • first: Το πρώτο στοιχείο.
  • last: Το τελευταίο στοιχείο.
  • firstOrNull: Το πρώτο στοιχείο ή null.
  • lastOrNull: Το τελευταίο στοιχείο ή null.
  • indexOf: Ο δείκτης της πρώτης εμφάνισης ενός στοιχείου.
  • lastIndexOf: Ο δείκτης της τελευταίας εμφάνισης.
  • single: Επιστρέφει το μόνο στοιχείο αν υπάρχει, διαφορετικά ρίχνει εξαίρεση.
  • singleOrNull: Το μόνο στοιχείο ή null.

Εντολές για τμήματα της συλλογής:

  • slice: Επιστρέφει μια λίστα στοιχείων βάσει δοσμένων δεικτών.
  • chunked: Χωρίζει τη συλλογή σε λίστες μεγέθους που ορίζεται.
  • windowed: Δημιουργεί παράθυρα με ολίσθηση μεγέθους που ορίζεται.

Ομαδοποιητικές λειτουργίες:

  • groupBy: Ομαδοποιεί στοιχεία βάσει κλειδιού, επιστρέφοντας ένα Map.
  • groupingBy: Επιστρέφει ένα αντικείμενο Grouping για lazy συλλογές.

Ελέγχους:

  • all: Ελέγχει αν όλα τα στοιχεία ικανοποιούν το predicate.
  • any: Αν τουλάχιστον ένα στοιχείο ικανοποιεί.
  • none: Κανένα στοιχείο δεν ικανοποιεί.
  • contains: Περιέχει ένα συγκεκριμένο στοιχείο;
  • isEmpty: Είναι κενή;
  • isNotEmpty: Δεν είναι κενή;

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

Παράδειγμα χρήσης map:

// Λίστα αριθμών
val numbers = listOf(1, 2, 3, 4, 5)

// Μετατροπή κάθε αριθμού στο τετράγωνό του
val squares = numbers.map { it * it }

// squares: [1, 4, 9, 16, 25]

Παράδειγμα χρήσης filter:

// Λίστα συμβολοσειρών
val fruits = listOf("apple", "banana", "cherry", "date")

// Φιλτράρισμα με βάση μήκος μεγαλύτερο από 5
val longFruits = fruits.filter { it.length > 5 }

// longFruits: [banana, cherry]