use List instead of ArrayList
change signature of abstract partition method

It is better to be specific for typing the output. But the input can be any type of list.
remove unused imports
implement k-means