package com.plectix.simulator.simulationclasses.probability; import java.util.ArrayList; import java.util.List; public final class SkipListItem<E extends WeightedItem> { private E weightedItem = null; private List<Double> sums = new ArrayList<Double>(); private List<SkipListItem<E>> forwardpointers = new ArrayList<SkipListItem<E>>(); private List<SkipListItem<E>> backPointers = new ArrayList<SkipListItem<E>>(); public SkipListItem() { super(); } public final int getLevel() { return forwardpointers.size(); } public void clear() { weightedItem = null; sums.clear(); forwardpointers.clear(); backPointers.clear(); } public final boolean addPointersAndSum(SkipListItem<E> backwardPointer, SkipListItem<E> forwardPointer, double sum) { backPointers.add(backwardPointer); forwardpointers.add(forwardPointer); return sums.add(sum); } public final void removePointersAndSum(int level) { final int size = sums.size(); if (level == size) { throw new RuntimeException("Trying to remove index " + level + " while size is " + size); } backPointers.subList(level, size).clear(); forwardpointers.subList(level, size).clear(); sums.subList(level, size).clear(); } public final double getSum(int index) { return sums.get(index); } public final void incrementSum(int index, double increment) { sums.set(index, sums.get(index) + increment); } public final void resetSum(int index) { sums.set(index, 0.0); } public final SkipListItem<E> getForwardPointer(int index) { return forwardpointers.get(index); } public final SkipListItem<E> getBackwardPointer(int index) { return backPointers.get(index); } public final void setForwardPointer(int index, SkipListItem<E> skipListItem) { forwardpointers.set(index, skipListItem); } public final void setBackwardPointer(int index, SkipListItem<E> skipListItem) { backPointers.set(index, skipListItem); } public final E getWeightedItem() { return weightedItem; } public final void setWeightedItem(E weightedItem) { this.weightedItem = weightedItem; } }