Преглед изворни кода

Merge pull request #87 from winterchord/polish_linked_list_exercise

Polish example linked-list exercise
John Ryan пре 10 година
родитељ
комит
4284bc28cd
3 измењених фајлова са 29 додато и 68 уклоњено
  1. 28
    16
      linked-list/src/example/java/Deque.java
  2. 0
    52
      linked-list/src/example/java/Element.java
  3. 1
    0
      settings.gradle

+ 28
- 16
linked-list/src/example/java/Deque.java Прегледај датотеку

1
 public final class Deque<T> {
1
 public final class Deque<T> {
2
-    private Element head;
2
+    private Element<T> head;
3
 
3
 
4
     public void push(T value) {
4
     public void push(T value) {
5
         if (head == null) {
5
         if (head == null) {
6
-            head = new Element(value, null, null);
7
-            head.setNext(head);
8
-            head.setPrev(head);
6
+            head = new Element<>(value, null, null);
7
+            head.next = head;
8
+            head.prev = head;
9
             return;
9
             return;
10
         }
10
         }
11
 
11
 
12
-        Element oldTail = head.getPrev();
13
-        Element tail = new Element(value, oldTail, head);
14
-        oldTail.setNext(tail);
15
-        head.setPrev(tail);
12
+        Element<T> oldTail = head.prev;
13
+        Element<T> tail = new Element<>(value, oldTail, head);
14
+        oldTail.next = tail;
15
+        head.prev = tail;
16
     }
16
     }
17
 
17
 
18
     public T pop() {
18
     public T pop() {
19
-        head = head.getPrev();
19
+        head = head.prev;
20
         return shift();
20
         return shift();
21
     }
21
     }
22
 
22
 
23
     public void unshift(T value) {
23
     public void unshift(T value) {
24
         push(value);
24
         push(value);
25
-        head = head.getPrev();
25
+        head = head.prev;
26
     }
26
     }
27
 
27
 
28
     public T shift() {
28
     public T shift() {
29
-        Object value = head.getValue();
29
+        T value = head.value;
30
 
30
 
31
-        Element newHead = head.getNext();
32
-        Element newTail = head.getPrev();
31
+        Element<T> newHead = head.next;
32
+        Element<T> newTail = head.prev;
33
 
33
 
34
         if (newHead == head) {
34
         if (newHead == head) {
35
             head = null;
35
             head = null;
36
         }
36
         }
37
         else {
37
         else {
38
-            newHead.setPrev(newTail);
39
-            newTail.setNext(newHead);
38
+            newHead.prev = newTail;
39
+            newTail.next = newHead;
40
             head = newHead;
40
             head = newHead;
41
         }
41
         }
42
 
42
 
43
-        return (T) value;
43
+        return value;
44
+    }
45
+
46
+    private static final class Element<T> {
47
+        private final T value;
48
+        private Element<T> prev;
49
+        private Element<T> next;
50
+
51
+        public Element(T value, Element<T> prev, Element<T> next) {
52
+            this.value = value;
53
+            this.prev = prev;
54
+            this.next = next;
55
+        }
44
     }
56
     }
45
 }
57
 }

+ 0
- 52
linked-list/src/example/java/Element.java Прегледај датотеку

1
-public final class Element {
2
-    private final Object value;
3
-    private Element prev;
4
-    private Element next;
5
-
6
-    public Element(Object value, Element prev, Element next) {
7
-        this.value = value;
8
-        this.prev = prev;
9
-        this.next = next;
10
-    }
11
-
12
-    public Element getPrev() {
13
-        return prev;
14
-    }
15
-
16
-    public void setPrev(Element prev) {
17
-        this.prev = prev;
18
-    }
19
-
20
-    public Element getNext() {
21
-        return next;
22
-    }
23
-
24
-    public void setNext(Element next) {
25
-        this.next = next;
26
-    }
27
-
28
-    public Object getValue() {
29
-        return value;
30
-    }
31
-
32
-    @Override
33
-    public boolean equals(Object o) {
34
-        if (this == o) return true;
35
-        if (o == null || getClass() != o.getClass()) return false;
36
-
37
-        Element element = (Element) o;
38
-
39
-        if (value != null ? !value.equals(element.value) : element.value != null) return false;
40
-        if (prev != null ? !prev.equals(element.prev) : element.prev != null) return false;
41
-        return next != null ? next.equals(element.next) : element.next == null;
42
-
43
-    }
44
-
45
-    @Override
46
-    public int hashCode() {
47
-        int result = value != null ? value.hashCode() : 0;
48
-        result = 31 * result + (prev != null ? prev.hashCode() : 0);
49
-        result = 31 * result + (next != null ? next.hashCode() : 0);
50
-        return result;
51
-    }
52
-}

+ 1
- 0
settings.gradle Прегледај датотеку

11
 include 'hamming'
11
 include 'hamming'
12
 include 'hexadecimal'
12
 include 'hexadecimal'
13
 include 'hello-world'
13
 include 'hello-world'
14
+include 'linked-list'
14
 include 'luhn'
15
 include 'luhn'
15
 include 'meetup'
16
 include 'meetup'
16
 include 'nth-prime'
17
 include 'nth-prime'