Στη Java, οι πίνακες είναι ένας τρόπος να αποθηκεύεις πολλαπλές τιμές του ίδιου τύπου σε μία μόνο δομή. Σε αντίθεση με άλλες δομές δεδομένων, οι πίνακες έχουν σταθερό μέγεθος από τη στιγμή που θα δημιουργηθούν. Μπορείς να αναθέσεις στοιχεία σε έναν πίνακα ή να τα ανακτήσεις από αυτόν χρησιμοποιώντας μια θέση. Οι πίνακες στη Java χρησιμοποιούν μηδενική αρίθμηση: η θέση του πρώτου στοιχείου είναι 0, η θέση του δεύτερου στοιχείου είναι 1, κ.ο.κ.
Ακολουθεί η βασική σύνταξη για την αρχικοποίηση ενός πίνακα:
type[] variableName = new type[size];
Το type είναι ο τύπος των στοιχείων του πίνακα, ο οποίος μπορεί να είναι ένας πρωτογενής τύπος (π.χ. int) ή μια κλάση (π.χ. String).
Το size είναι ο αριθμός των στοιχείων που θα χωρέσει αυτός ο πίνακας (και δεν μπορεί να αλλάξει αργότερα).
Μετά τη δημιουργία του πίνακα, τα στοιχεία αρχικοποιούνται στις προεπιλεγμένες τιμές τους (συνήθως 0, false ή null).
// Declare array with explicit size (size is 2)
int[] twoInts = new int[2];
Οι πίνακες μπορούν επίσης να οριστούν με μια συντομευμένη σημειογραφία που σου επιτρέπει και να δημιουργήσεις τον πίνακα και να ορίσεις τις τιμές του:
// Two equivalent ways to declare and initialize an array (size is 3)
int[] threeIntsV1 = new int[] { 4, 9, 7 };
int[] threeIntsV2 = { 4, 9, 7 };
Εφόσον ο μεταγλωττιστής μπορεί τώρα να καταλάβει πόσα στοιχεία θα έχει ο πίνακας, το μήκος μπορεί να παραλειφθεί.
Τα στοιχεία ενός πίνακα μπορούν να ανατεθούν και να προσπελαστούν χρησιμοποιώντας σημειογραφία θέσης με αγκύλες:
// Assign second element by index
twoInts[1] = 8;
// Retrieve the second element by index and assign to the int element
int secondElement = twoInts[1];
Η πρόσβαση σε μια θέση που είναι εκτός των έγκυρων θέσεων του πίνακα προκαλεί μια IndexOutOfBoundsException.
Μπορείς να χειριστείς τους πίνακες είτε καλώντας τις μεθόδους ή τις ιδιότητες ενός στιγμιοτύπου πίνακα, είτε χρησιμοποιώντας τις στατικές μεθόδους που ορίζονται στην κλάση Arrays (συνήθως χρησιμοποιούνται μόνο σε κώδικα με γενικούς τύπους).
Η ιδιότητα length περιέχει το μήκος ενός πίνακα.
Μπορείς να την προσπελάσεις ως εξής:
int arrayLength = someArray.length;
Η Java παρέχει επίσης μια χρήσιμη βοηθητική κλάση java.util.Arrays που έχει πολλές χρήσιμες μεθόδους για πίνακες (π.χ. Arrays.equals).
Η Java υποστηρίζει επίσης πολυδιάστατους πίνακες όπως int[][] arr = new int[3][4];, οι οποίοι μπορούν να φανούν πολύ χρήσιμοι.
Το γεγονός ότι ένας πίνακας είναι επίσης μια συλλογή σημαίνει ότι, εκτός από την πρόσβαση σε τιμές με τη θέση τους, μπορείς να διατρέξεις όλες τις τιμές του χρησιμοποιώντας έναν βρόχο for-each:
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for(char vowel: vowels) {
// Output the vowel
System.out.print(vowel);
}
// => aeiou
Αν θέλεις περισσότερο έλεγχο στο ποιες τιμές θα διατρέξεις, μπορείς να χρησιμοποιήσεις έναν for βρόχο:
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for (int i = 0; i < 3; i++) {
// Output the vowel
System.out.print(vowels[i]);
}
// => aei
Είσαι ένας φανατικός παρατηρητής πουλιών που παρακολουθεί πόσα πουλιά έχουν επισκεφτεί τον κήπο σου τις τελευταίες επτά ημέρες.
Έχεις έξι εργασίες, όλες σχετικές με τον αριθμό των πουλιών που επισκέφτηκαν τον κήπο σου.
Για λόγους σύγκρισης, κρατάς πάντα κοντά σου ένα αντίγραφο των μετρήσεων της προηγούμενης εβδομάδας, οι οποίες ήταν: 0, 2, 5, 3, 7, 8 και 4. Υλοποίησε τη μέθοδο BirdWatcher.getLastWeek() που επιστρέφει τις μετρήσεις της προηγούμενης εβδομάδας:
BirdWatcher.getLastWeek();
// => [0, 2, 5, 3, 7, 8, 4]
Υλοποίησε τη μέθοδο BirdWatcher.getToday() ώστε να επιστρέφει πόσα πουλιά επισκέφτηκαν τον κήπο σου σήμερα. Οι μετρήσεις των πουλιών είναι ταξινομημένες ανά ημέρα, με το πρώτο στοιχείο να είναι η μέτρηση της παλαιότερης ημέρας και το τελευταίο στοιχείο τη σημερινή μέτρηση.
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getToday();
// => 1
Υλοποίησε τη μέθοδο BirdWatcher.incrementTodaysCount() για να αυξήσεις τη σημερινή μέτρηση:
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.incrementTodaysCount();
birdCount.getToday();
// => 2
Υλοποίησε τη μέθοδο BirdWatcher.hasDayWithoutBirds() που επιστρέφει true αν υπήρξε ημέρα κατά την οποία δεν επισκέφτηκε κανένα πουλί τον κήπο· διαφορετικά, επέστρεψε false:
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.hasDayWithoutBirds();
// => true
Υλοποίησε τη μέθοδο BirdWatcher.getCountForFirstDays() που επιστρέφει τον αριθμό των πουλιών που επισκέφτηκαν τον κήπο σου από την αρχή της εβδομάδας, αλλά περιορίζει τη μέτρηση στον καθορισμένο αριθμό ημερών από την αρχή της εβδομάδας.
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getCountForFirstDays(4);
// => 14
Κάποιες ημέρες είναι πιο πολυάσχολες από άλλες. Πολυάσχολη ημέρα είναι μία κατά την οποία πέντε ή περισσότερα πουλιά έχουν επισκεφτεί τον κήπο σου.
Υλοποίησε τη μέθοδο BirdWatcher.getBusyDays() για να επιστρέψεις τον αριθμό των πολυάσχολων ημερών:
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getBusyDays();
// => 2
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Java με 26 έννοιες158 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.