07: More StringArrayList

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.


For each question, write the method assuming that it’s part of the StringArrayList we started in lecture. The code is in the notes, linked to from the Schedule page, if you missed class.

A. (2 points) Write a public void set(int i, String s) method that sets the element of the list at index i to the value s. That is, it should overwrite the existing element at i. Be sure to handle exceptional conditions appropriately.

B. (2 points) Using a foreach loop, write a public boolean contains(String s) method that searches the list for an occurrence of a value equivalent to s (be careful with the kind of equality you use!). Return true to indicate that a string equivalent to s is contained in the StringArrayList, and return false to indicate that there is no value in our StringArrayList that is equivalent to s.

The only variable you may declare is the String declared in the foreach loop: for (String v : array) { ... }. Do not declare any other variables (you will lose points)!!!

C. (2 points) Write a public int lastIndexOf(String s) method that searches the list for the last occurrence of a value equivalent to s (be careful with what kind of equality you use!), and returns its index. Return -1 if the value is not found.

D. (1 point each) Suppose you instantiate a new StringArrayList. What are the size and the length of the backing array:

  1. Right after instantiating the list.
  2. After you add() 10 items to this list.
  3. After you remove(0) five times from this list.
  4. After you add() 10 more items to this list.

Assume each step happens in sequence (that is, for part 3, you’ve instantiated the list, added 10 items, and then removed five).