Updating to NBMs from NetBeans 8.0.1 as some of them are required to run on JDK8
1 package org.apidesign.effectivelist
4 * Implementation of add and remove efficient list. It has just one
5 * restriction - its items need to carry additional information to help
6 * the list to be effective. All items must extend trait {@link Listable}:
8 * <b>case class</b> Person(name : String) <b>extends</b> Listable[Person]
11 // BEGIN: effectivelist.list
12 final class List[T <: Listable[T]] {
13 private var item : T = _
14 private final var EMPTY : T = _
16 final def get(index : Int) : T = {
18 for (i <- 1 to index) {
21 throw new IndexOutOfBoundsException()
27 final def size() : Int = {
40 final def add(toAdd : T) : Boolean = {
41 if (toAdd.prev != EMPTY) {
51 toAdd.prev = item.prev
52 item.prev.next = toAdd
58 final def remove(toRemove : T) : Boolean = {
59 if (toRemove.prev == EMPTY) {
62 toRemove.prev.next = toRemove.next
63 toRemove.next.prev = toRemove.prev;
64 if (item.next == item) {
67 if (item == toRemove) {
76 // END: effectivelist.list