package ex.core;
/**
* This class stores the sequence of numbers inserted by the user. The sequence is stored into a List
* to preserve the insertion order.
**/
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
public class Sequence {
private List<Number> _sequence;
public Sequence() {
_sequence = new ArrayList<>();
}
public int addNumber(int n) {
Number number = new Number(n);
int index = _sequence.indexOf(number);
if (index == -1) // not found
_sequence.add(number);
else
_sequence.get(index).incCount();
return size();
}
public boolean removeNumber(int n) {
Number number = new Number(n);
int index = _sequence.indexOf(number);
if (index == -1) // not found
return false;
else {
number = _sequence.get(index);
number.decCount();
if (number.count() == 0)
_sequence.remove(number);
return true;
}
}
public int size() {
int n = 0;
for (Number number : _sequence)
n += number.count();
return n;
}
public int distinctNumbers() {
return _sequence.size();
}
public List<Number> sequence() {
return Collections.unmodifiableList(_sequence);
}
}