diff options
| -rw-r--r-- | AlgoAufgabe1/bin/de/ostfalia/algo/ws18/s1/Main.class | bin | 1310 -> 2294 bytes | |||
| -rw-r--r-- | AlgoAufgabe1/bin/de/ostfalia/algo/ws18/s1/Management.class | bin | 7856 -> 7352 bytes | |||
| -rw-r--r-- | AlgoAufgabe1/bin/de/ostfalia/algo/ws18/s1/Member.class | bin | 4921 -> 4894 bytes | |||
| -rw-r--r-- | AlgoAufgabe1/src/de/ostfalia/algo/ws18/s1/Main.java | 18 | ||||
| -rw-r--r-- | AlgoAufgabe1/src/de/ostfalia/algo/ws18/s1/Management.java | 51 | ||||
| -rw-r--r-- | AlgoAufgabe1/src/de/ostfalia/algo/ws18/s1/Member.java | 15 |
6 files changed, 61 insertions, 23 deletions
diff --git a/AlgoAufgabe1/bin/de/ostfalia/algo/ws18/s1/Main.class b/AlgoAufgabe1/bin/de/ostfalia/algo/ws18/s1/Main.class Binary files differindex db6e52f..ef977e4 100644 --- a/AlgoAufgabe1/bin/de/ostfalia/algo/ws18/s1/Main.class +++ b/AlgoAufgabe1/bin/de/ostfalia/algo/ws18/s1/Main.class diff --git a/AlgoAufgabe1/bin/de/ostfalia/algo/ws18/s1/Management.class b/AlgoAufgabe1/bin/de/ostfalia/algo/ws18/s1/Management.class Binary files differindex d077242..4009f40 100644 --- a/AlgoAufgabe1/bin/de/ostfalia/algo/ws18/s1/Management.class +++ b/AlgoAufgabe1/bin/de/ostfalia/algo/ws18/s1/Management.class diff --git a/AlgoAufgabe1/bin/de/ostfalia/algo/ws18/s1/Member.class b/AlgoAufgabe1/bin/de/ostfalia/algo/ws18/s1/Member.class Binary files differindex 555a5ff..021ced8 100644 --- a/AlgoAufgabe1/bin/de/ostfalia/algo/ws18/s1/Member.class +++ b/AlgoAufgabe1/bin/de/ostfalia/algo/ws18/s1/Member.class diff --git a/AlgoAufgabe1/src/de/ostfalia/algo/ws18/s1/Main.java b/AlgoAufgabe1/src/de/ostfalia/algo/ws18/s1/Main.java index 686a0bd..91bbebc 100644 --- a/AlgoAufgabe1/src/de/ostfalia/algo/ws18/s1/Main.java +++ b/AlgoAufgabe1/src/de/ostfalia/algo/ws18/s1/Main.java @@ -1,9 +1,23 @@ package de.ostfalia.algo.ws18.s1; +import java.time.LocalDate; + +import de.ostfalia.algo.ws18.base.Gender; +import de.ostfalia.algo.ws18.base.KindOfSport; + public class Main { public static void main(String ...args) { - Management management = new Management("Materialien/Mitglieder10000.txt"); + Management management = new Management(); + management.checkpoint(); + management.insert(new Member("Blümchen", "Benjamin", LocalDate.now(), Gender.M, KindOfSport.TANZEN)); + System.out.println(management.checkpoint()/1000 + " ms für das erste insert"); + management.insert(new Member("Kolumna", "Carla", LocalDate.now(), Gender.F, KindOfSport.RADSPORT)); + System.out.println(management.checkpoint()/1000 + " ms für das zweite insert"); System.out.println("management hat " + management.size() + " Elemente, eingefügt in " + management.numberOfOperations()); - System.out.println("Suche Claudia Wexler: " + management.search("Wexler", "Claudia") + ", gefunden nach " + management.numberOfOperations()); + management.checkpoint(); + System.out.println("Suche Claudia Wexler: " + + management.search("Wexler", "Claudia") + + ", gefunden nach " + management.numberOfOperations() + + " Operationen und " + management.checkpoint()/1000 + " ms"); } } diff --git a/AlgoAufgabe1/src/de/ostfalia/algo/ws18/s1/Management.java b/AlgoAufgabe1/src/de/ostfalia/algo/ws18/s1/Management.java index 2be04c7..59c5d20 100644 --- a/AlgoAufgabe1/src/de/ostfalia/algo/ws18/s1/Management.java +++ b/AlgoAufgabe1/src/de/ostfalia/algo/ws18/s1/Management.java @@ -4,7 +4,6 @@ import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; -import java.util.Optional; import java.util.function.Predicate; import de.ostfalia.algo.ws18.base.IManagement; @@ -13,14 +12,18 @@ import de.ostfalia.algo.ws18.base.KindOfSport; public class Management implements IManagement { /** - * Tracks the number of operations. + * Track the number of operations. */ private int numberOfOperations = 0; + /** + * Track the execution time. + */ + private long lastCheckpointNs; /** * Current head node. */ - private Optional<LinkedListNode<IMember>> head = Optional.empty(); + private LinkedListNode<IMember> head; /** * Length of the list. */ @@ -61,7 +64,7 @@ public class Management implements IManagement { * * @param filename Path to the CSV file. */ - private void importFromFile(String filename) { + public void importFromFile(String filename) { File file = new File(filename); try (BufferedReader bufferedReader = new BufferedReader(new FileReader(file))) { @@ -80,14 +83,14 @@ public class Management implements IManagement { */ private Management filter(Predicate<IMember> criteria, boolean breakAfterFirstMatch) { Management result = new Management(); - if (!this.head.isPresent()) { + if (this.size == 0) { return result; } // searches from head, inserts at head -> result is reversed result.reverse(); - LinkedListNode<IMember> currentNode = this.head.get(); + LinkedListNode<IMember> currentNode = this.head; do { // traverse = 1 operation this.numberOfOperations++; @@ -108,10 +111,15 @@ public class Management implements IManagement { * Find the first element that matches the given criteria. * * @param criteria Criteria to search for. - * @return An optional containing the first element that matches the given criteria. + * @return The first element that matches the given criteria or null. */ - private Optional<IMember> search(Predicate<IMember> criteria) { - return this.filter(criteria, true).head.map(head -> head.getValue()); + private IMember search(Predicate<IMember> criteria) { + Management filteredList = this.filter(criteria, true); + if (filteredList.size() == 0) { + return null; + } else { + return filteredList.head.getValue(); + } } /** @@ -150,10 +158,10 @@ public class Management implements IManagement { this.numberOfOperations++; LinkedListNode<IMember> newHead = new LinkedListNode<IMember>(value); - if (this.head.isPresent()) { - newHead.setNext(this.head.get()); + if (this.head != null) { + newHead.setNext(this.head); } - this.head = Optional.of(newHead); + this.head = newHead; this.size++; return true; // TODO? @@ -167,7 +175,7 @@ public class Management implements IManagement { */ @Override public IMember search(long key) { - return this.search(member -> member.getKey() == key).orElse(null); + return this.search(member -> member.getKey() == key); } /** @@ -180,7 +188,7 @@ public class Management implements IManagement { @Override public IMember search(String name, String firstName) { return this.search(member -> member.getName().equals(name) - && member.getFirstName().equals(firstName)).orElse(null); + && member.getFirstName().equals(firstName)); } /** @@ -214,11 +222,11 @@ public class Management implements IManagement { @Override public IMember[] toArray() { IMember[] array = new IMember[this.size]; - if (!this.head.isPresent()) { + if (this.size() == 0) { return array; } - LinkedListNode<IMember> currentNode = this.head.get(); + LinkedListNode<IMember> currentNode = this.head; for (int index = 0; index < this.size; index++) { if (reversed) { @@ -243,4 +251,15 @@ public class Management implements IManagement { this.numberOfOperations = 0; return numberOfOperations; } + + /** + * Reset the timer and get the time difference in ns. + * + * @return Nanoseconds since the last call. + */ + public long checkpoint() { + long nanoseconds = this.lastCheckpointNs; + this.lastCheckpointNs = System.nanoTime(); + return this.lastCheckpointNs - nanoseconds; + } } diff --git a/AlgoAufgabe1/src/de/ostfalia/algo/ws18/s1/Member.java b/AlgoAufgabe1/src/de/ostfalia/algo/ws18/s1/Member.java index 0d0c9bd..7ade60e 100644 --- a/AlgoAufgabe1/src/de/ostfalia/algo/ws18/s1/Member.java +++ b/AlgoAufgabe1/src/de/ostfalia/algo/ws18/s1/Member.java @@ -104,10 +104,7 @@ public class Member implements IMember { String nameKeyPart = encodeLetters(member.name.substring(0, 1)); String surnameKeyPart = encodeLetters(member.firstname.substring(0, 1)); String dateKeyPart = encodeDate(member.date); - String key = String.format("%s%s%s", - nameKeyPart, - surnameKeyPart, - dateKeyPart); + String key = nameKeyPart + surnameKeyPart + dateKeyPart; return Long.valueOf(key); } @@ -118,7 +115,7 @@ public class Member implements IMember { * @return A String ttmmjjjj. */ private static String encodeDate(LocalDate date) { - return String.format("%02d%02d%02d", + return String.format("%02d%02d%02d", // 2 digits, left pad date.getDayOfMonth(), date.getMonthValue(), date.getYear()); @@ -165,6 +162,7 @@ public class Member implements IMember { /** * Return this member as string. */ + @Override public String toString() { return this.key + ", " + this.name + ", " @@ -179,30 +177,37 @@ public class Member implements IMember { * * @return @see Comparable */ + @Override public int compareTo(IMember member) { return Long.compare(this.key, member.getKey()); } + @Override public String getName() { return this.name; } + @Override public Gender getGender() { return this.gender; } + @Override public LocalDate getDate() { return this.date; } + @Override public String getFirstName() { return this.firstname; } + @Override public long getKey() { return this.key; } + @Override public KindOfSport getKindOfSport() { return this.kindOfSport; } |
