java:inner_classes
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| java:inner_classes [2019/04/02 20:38] – gthanos | java:inner_classes [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Μη στατικές εμφωλευμένες κλάσεις ====== | ====== Μη στατικές εμφωλευμένες κλάσεις ====== | ||
| - | Οι μη στατικές εμφωλευμένες κλάσεις ή εσωτερικές κλάσεις (inner classes) αποτελούν την γενικότερη περίπτωση εμφώλευσης μίας κλάσης μέσα σε μία άλλη κλάση. | + | Οι μη στατικές εμφωλευμένες κλάσεις ή εσωτερικές κλάσεις (inner classes) αποτελούν την γενικότερη περίπτωση εμφώλευσης μίας κλάσης μέσα σε μία άλλη κλάση. |
| - | Η λίστα θα χρειαστεί να έχει | + | Η λίστα θα χρειαστεί να έχει |
| - την κλάση που περιγράφει τον κόμβο της λίστας και | - την κλάση που περιγράφει τον κόμβο της λίστας και | ||
| - μία κλάση τύπου // | - μία κλάση τύπου // | ||
| - | Οι δύο παραπάνω κλάσεις εξυπηρετεί να δηλωθούν ως εσωτερικές κλάσεις αποκρύπτοντας την | + | Οι δύο παραπάνω κλάσεις εξυπηρετεί να δηλωθούν ως εσωτερικές κλάσεις αποκρύπτοντας την |
| - | <code java LinkedList.java> | + | Δείτε τον παρακάτω κώδικα που την υλοποιεί. |
| + | <code java LinkedList.java> | ||
| /* A linked list with sentinels at head and tail. | /* A linked list with sentinels at head and tail. | ||
| */ | */ | ||
| public class LinkedList< | public class LinkedList< | ||
| private Node< | private Node< | ||
| + | int size; | ||
| | | ||
| public LinkedList() { | public LinkedList() { | ||
| Line 18: | Line 20: | ||
| tail = new Node<> | tail = new Node<> | ||
| head.setNext(tail); | head.setNext(tail); | ||
| + | size = 0; | ||
| } | } | ||
| | | ||
| Line 65: | Line 68: | ||
| | | ||
| // append in the end | // append in the end | ||
| - | public | + | public |
| Node< | Node< | ||
| tail.getPrev().setNext(plus); | tail.getPrev().setNext(plus); | ||
| tail.setPrev(plus); | tail.setPrev(plus); | ||
| + | size++; | ||
| + | return true; | ||
| + | } | ||
| + | | ||
| + | public boolean add(int index, E elem) { | ||
| + | if(index> | ||
| + | return false; | ||
| + | Node< | ||
| + | for(int i=0; curr != tail && i<index; i++) { | ||
| + | curr = curr.next; | ||
| + | } | ||
| + | Node< | ||
| + | curr.prev.next = plus; | ||
| + | curr.prev = plus; | ||
| + | size++; | ||
| + | return true; | ||
| } | } | ||
| | | ||
| Line 91: | Line 110: | ||
| } | } | ||
| return -1; | return -1; | ||
| + | } | ||
| + | | ||
| + | int size() { | ||
| + | return size; | ||
| } | } | ||
| } | } | ||
| Line 104: | Line 127: | ||
| public static final int RANGE = 8 * SIZE; | public static final int RANGE = 8 * SIZE; | ||
| | | ||
| - | | + | static void print(LinkedList< |
| - | Random rand = new Random( new Date().getTime()); | + | |
| - | | + | |
| - | for(int i=0; i<SIZE; i++) { | + | |
| - | list.add(rand.nextInt(RANGE)); | + | |
| - | } | + | |
| Iterator< | Iterator< | ||
| | | ||
| Line 117: | Line 135: | ||
| } | } | ||
| System.out.println(); | System.out.println(); | ||
| + | } | ||
| + | | ||
| + | public static void main(String[] args) { | ||
| + | Random rand = new Random( new Date().getTime()); | ||
| + | LinkedList< | ||
| + | for(int i=0; i<SIZE; i++) { | ||
| + | int value = rand.nextInt(RANGE); | ||
| + | int pos = rand.nextInt(list.size()+1); | ||
| + | System.out.format(" | ||
| + | list.add(pos, | ||
| + | print(list); | ||
| + | } | ||
| + | print(list); | ||
| | | ||
| // Remove all elements less than RANGE/2 | // Remove all elements less than RANGE/2 | ||
| System.out.println(" | System.out.println(" | ||
| - | it = list.iterator(); | + | |
| while(it.hasNext()) { | while(it.hasNext()) { | ||
| int value = it.next(); | int value = it.next(); | ||
| Line 129: | Line 160: | ||
| } | } | ||
| } | } | ||
| + | print(list); | ||
| | | ||
| - | // Print list | ||
| - | it = list.iterator(); | ||
| - | while(it.hasNext()) { | ||
| - | System.out.print(it.next()+" | ||
| - | } | ||
| - | System.out.println(); | ||
| } | } | ||
| } | } | ||
java/inner_classes.1554237538.txt.gz · Last modified: 2019/04/02 19:38 (external edit)
