--- /dev/null
+import java.util.List;
+import java.util.ListIterator;
+
+public class ListExtension<E> {
+ private List<E> list;
+
+ public ListExtension() {
+ setList(null);
+ }
+
+ public ListExtension(List<E> l) {
+ setList(l);
+ }
+
+ /**
+ * [setList description]
+ * @param l [description]
+ */
+ public void setList(List<E> l) {
+ list = l;
+ }
+
+ /**
+ * [getList description]
+ * @return [description]
+ */
+ public List<E> getList() {
+ return list;
+ }
+
+ public boolean add(E e) {
+ return list.add(e);
+ }
+
+ /**
+ * 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;
+ ListIterator<E> iter = list.listIterator();
+ int i = 0;
+ // go to the element at mid index
+ while (iter.hasNext() && i < mid) {
+ iter.next();
+ i++;
+ }
+ iter.next(); // Insert before mid + 1
+ iter.add(value);
+ }
+
+ public void addNEMiddle(int Nelements) {
+ ListIterator<E> iter = list.listIterator();
+ int i = 0;
+ // go to the element at the middle index
+ while (iter.hasNext() && i < list.size() / 2) {
+ iter.next();
+ i++;
+ }
+ iter.next(); // Insert before mid + 1
+ for (int j = 0; j < Nelements; j++) {
+ iter.add((E)new Object());
+ }
+ }
+
+}