exo2: make the class methods more inline with the List<?> interface.
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Thu, 5 Apr 2018 16:56:02 +0000 (18:56 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Thu, 5 Apr 2018 16:56:02 +0000 (18:56 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
exo2/ListExtension.java
exo2/Main.java

index 3ba71ac607d993661cb26597093ae35c668ce024..a015be584fac6be368afe04642437fefb587fd49 100644 (file)
@@ -32,28 +32,32 @@ public class ListExtension<E> {
         return list.add(e);
     }
 
+    public int size() {
+        return list.size();
+    }
+
     /**
      * Should mimic the List<E> add(int index, T value) method
      * @param  value [description]
      * @return       [description]
      */
-    public void addMiddleIter(E value) {
-        int mid = list.size() / 2;
+    public void addIter(int index, E value) {
         ListIterator<E> iter = list.listIterator();
         int i = 0;
-        // go to the element at mid + 1 index
-        while (iter.hasNext() && i <= mid) {
+        // go to the element at index + 1
+        while (iter.hasNext() && i <= index) {
             iter.next();
             i++;
         }
         iter.add(value);
     }
 
-    public void addNEMiddle(int Nelements) {
+    //FIXME: replace parameter by the list of objects to add
+    public void addNelements(int index, int Nelements) {
         ListIterator<E> iter = list.listIterator();
         int i = 0;
-        // go to the element at the middle + 1 index
-        while (iter.hasNext() && i <= list.size() / 2) {
+        // go to the element at index + 1
+        while (iter.hasNext() && i <= index) {
             iter.next();
             i++;
         }
index 2df8729213d967716022dd7cc45a31b9727272f9..2fbf94fc034bc0d004f16913537f866bbb1ec8cf 100644 (file)
@@ -18,20 +18,20 @@ class Main {
         }
 
         long startTime = System.nanoTime();
-        //for (int i = 0; i < 100000; i++) {
-        //    array.addMiddleIter(i);
-        //}
-        array.addNEMiddle(100000);
+        // for (int i = 0; i < 100000; i++) {
+        //    array.addIter(array.size() / 2, i);
+        // }
+        array.addNelements(array.size() / 2, 100000);
         long stopTime = System.nanoTime();
         long execTimeArray = stopTime - startTime;
         //System.out.println("Insert time in the middle of the ArrayList: " + TimeUnit.NANOSECONDS.toSeconds(execTime) + " s");
         System.out.println("Insert time in the middle of the ArrayList: " + execTimeArray + " ns");
 
         startTime = System.nanoTime();
-        //for (int i = 0; i < 100000; i++) {
-        //    list.addMiddleIter(i);
-        //}
-        list.addNEMiddle(100000);
+        // for (int i = 0; i < 100000; i++) {
+        //     list.addIter(list.size() / 2, i);
+        // }
+        list.addNelements(list.size() / 2, 100000);
         stopTime = System.nanoTime();
         long execTimeLinked = stopTime - startTime;
         //System.out.println("Insert time in the middle of the LinkedList: " + TimeUnit.NANOSECONDS.toSeconds(execTime) + " s");