java:functional_interfaces
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| java:functional_interfaces [2026/05/21 06:04] – [Functional Interfaces] gthanos | java:functional_interfaces [2026/05/21 08:15] (current) – [Παράδειγμα χρήσης του Functional Interface java.util.Comparator] gthanos | ||
|---|---|---|---|
| Line 5: | Line 5: | ||
| ===== Τι είναι τα Functional Interfaces ; ===== | ===== Τι είναι τα Functional Interfaces ; ===== | ||
| - | Ένα Functional Interface είναι ένα interface το οποίο περιέχει ακριβώς μία abstract (αφηρημένη) μέθοδο. Μπορεί να έχει επιπλέον //default// ή //static// μεθόδους τις οποίες όμως δεν υπολογίζμε διότι έχουν ήδη κάποια υλοποίηση. | + | Ένα Functional Interface είναι ένα interface το οποίο περιέχει ακριβώς μία abstract (αφηρημένη) μέθοδο. Μπορεί να έχει επιπλέον //default// ή //static// μεθόδους τις οποίες όμως δεν υπολογίζουμε, διότι έχουν ήδη κάποια υλοποίηση. |
| Συνήθως, | Συνήθως, | ||
| Line 11: | Line 11: | ||
| Γνωστό παράδειγμα, | Γνωστό παράδειγμα, | ||
| - | ==== Χρήση του Functional Interface java.util.Comparator ==== | + | ==== Παράδειγμα χρήσης του Functional Interface java.util.Comparator ==== |
| - | Ας υποθέσουμε ότι έχουμε την κλάση [[java: | + | Ας υποθέσουμε ότι |
| - | Ταξιονομούμε τους φοιτητές με βάση το επίθετο τους, με τη βοήθεια του παρακάτω συγκριτή: | + | Θα ταξινομήσουμε τους φοιτητές με βάση το επίθετο τους, με τη βοήθεια του παρακάτω συγκριτή: |
| <code java StudentComparator.java> | <code java StudentComparator.java> | ||
| Line 34: | Line 34: | ||
| public static void main(String[] args) { | public static void main(String[] args) { | ||
| List< | List< | ||
| - | new Student(" | + | new Student(" |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| | | ||
| | | ||
| Line 46: | Line 46: | ||
| </ | </ | ||
| - | Παρατηρήστε ότι για να ταξινομήσουμε τα αντικείμενα πρέπει να φτιάξουμε ένα αντικείμενο της κλάσης | + | Παρατηρήστε ότι για να ταξινομήσουμε τα αντικείμενα πρέπει |
| <code java SortStudents.java> | <code java SortStudents.java> | ||
| Line 69: | Line 69: | ||
| </ | </ | ||
| - | H έκφραση '' | + | H έκφραση '' |
| - | ==== Ορισμός ενός δικού μας Functional Interface ==== | + | Περισσότερα για τα //lamda expressions// |
| + | |||
| + | ==== Παράδειγμα ορισμού ενός δικού μας Functional Interface ==== | ||
| Ας υποθέσουμε ότι έχουμε το interface CustomHasher< | Ας υποθέσουμε ότι έχουμε το interface CustomHasher< | ||
| Line 82: | Line 84: | ||
| </ | </ | ||
| - | Ας υποθέσουμε τώρα ότι για την κλάση του φοιτητή υλοποιούμε τον παρακάτω CustomHasher | + | Ας υποθέσουμε τώρα ότι για την |
| <code java StudentHasher.java> | <code java StudentHasher.java> | ||
| public class StudentHasher implements CustomHasher< | public class StudentHasher implements CustomHasher< | ||
| public long hash(Student s) { | public long hash(Student s) { | ||
| - | | + | long value = 5381; |
| for (char c : s.getLastName().toCharArray()) { | for (char c : s.getLastName().toCharArray()) { | ||
| value = ((value << 5) + value) + (int)c; | value = ((value << 5) + value) + (int)c; | ||
| } | } | ||
| - | value << 1; | ||
| for (char c : s.getFirstName().toCharArray()) { | for (char c : s.getFirstName().toCharArray()) { | ||
| value = ((value << 5) + value) + (int)c; | value = ((value << 5) + value) + (int)c; | ||
| Line 100: | Line 102: | ||
| </ | </ | ||
| - | O κώδικας για να γίνει hash ένας φοιτητής δίνεται παρακάτω | + | O κώδικας για να μετασχηματιστεί σε hash value ένας φοιτητής δίνεται παρακάτω |
| <code java HashStudent.java> | <code java HashStudent.java> | ||
| public class StudentHasher { | public class StudentHasher { | ||
| public static void main(String[] args) { | public static void main(String[] args) { | ||
| - | Student | + | Student |
| StudentHasher sh = new StudentHasher(); | StudentHasher sh = new StudentHasher(); | ||
| - | System.out.println(" | + | System.out.println(" |
| } | } | ||
| } | } | ||
| </ | </ | ||
| - | Οι δύο | + | Ο παραπάνω κώδικας θα μπορούσε να γραφεί ως εξής, με τη βοήθεια ενος //lamda expression// |
| <code java HashStudent.java> | <code java HashStudent.java> | ||
| public class HashStudent { | public class HashStudent { | ||
| public static void main(String[] args) { | public static void main(String[] args) { | ||
| - | Student | + | Student |
| CustomHasher< | CustomHasher< | ||
| long value = 5381; | long value = 5381; | ||
| Line 128: | Line 130: | ||
| return value; | return value; | ||
| }; | }; | ||
| - | System.out.println(" | + | System.out.println(" |
| } | } | ||
| } | } | ||
java/functional_interfaces.1779343473.txt.gz · Last modified: 2026/05/21 06:04 by gthanos
