15: Static Method Finger Exercises

Submit this homework using Gradescope. You can type up your answers, or write legibly and scan them. Do not attempt to submit a paper copy in class, as it will not be accepted.


(Some finger exercises, since we didn’t quite finish sorting Thursday. Remember, you can use Eclipse to check that you’re doing these right!)

A. (2 points) Suppose you have a List<E>. Write a generic static method deduplicate that modifies the list in-place, removing all but one of any element that the list contains, and leaving the list otherwise unchanged – specifically, do not change its order! Items are considered duplicates according to the semantics of their equals method.

For example, the after deduplication, the list [3, 1, 2, 1, 3, 4] would be changed to [3, 1, 2, 4].

B. (2 points) Suppose you have a List<E>. Write a generic static method rotations that returns a Set<List<E>> consisting of the full set of unique rotations of its input. You can use Collections.rotate to rotate the input list. The input list should be unmodified after this method returns.

For example:

  • If the input is the list [1, 2, 1, 2], the output would be the set of two lists {[1, 2, 1, 2], [2, 1, 2, 1]}.
  • If the input is the list [1, 2, 3], the output would be the set of three lists {[1, 2, 3], [2, 3, 1], [3, 1, 2]}.