I'm finding the current Vector classes in Mahout a bit confusing.
The vector implementation are just fine, I'm talking more about the decorated vectors:
I propose using a single DecoratedVector<T> type that can easily be extended.
For example, right now MatrixSlice doesn't even implement the Vector interface.
WeightedVector -> DecoratedVector<Pair<Integer, Double>>
MatrixSlice -> DecoratedVector<Integer>
NamedVector -> DecoratedVector<String>
We could even keep the names (maybe changing MatrixSlice to something like IndexedVector though?) by extending DecoratedVector<T>.
I'd be willing to fix this if people think it's a good idea.
What about it?