Module 5 - ArrayList
Module 5 - ArrayList
In this exercise, you will learn to write static methods that use Lists and
Strings. Each of these is around the difficulty of some exam questions. If
you need to make a new List as part of the method, implement it using an
ArrayList. Read footnotes for hints.
Your answers for this homework will be used for your next homework.
1
1 Static Generic Methods
Most of the methods we write in class won’t be static, but that’s no reason not
to learn how to do that. Java makes writing generic methods look intimidating,
but in reality, it’s not so bad. I’ll walk you through how to do it by showing
what we want to do, hitting an error, and then showing you how to resolve the
error.
Suppose we want to write a method called in, which given a List and an
item, checks to see if the List contains that item. 1 We don’t know what type
the item will, nor do we know what kind of stuff the List will be holding, as
that will change from one program to another, and we want this method to be
able to be used in any kind of context. That means we want it to be generic.
However, if we write
// this is an error
public static boolean in ( List <E > list , E item ){
}
We get “E cannot be resolved to a type” as an error. This happens because
Java doesn’t know that you want to use E as the symbol for generics for this
method. We can fix this by adding a <E> in between static and our return
type, like so:
public static <E > boolean in ( List <E > list , E item ){
The big difference here between a class that uses a generic, like ArrayList,
and the static methods you write here is that the generic type only exists for
the method.
}
For each method, ask yourself “Does this method need to work on a List
of any type, or just a single type?” If any type, you need to make a generic
method. If a single type, then you don’t need to use a generic in that method.
1 This exists as an instance method under a different name within any List, but let’s
pretend it doesn’t.
2
2 The Methods
For each of the following, create a static method with the appropriate inputs
and outputs. Call each of them in the main method.
2.1 Uniqueness
Write a method called unique() which takes in a List and returns true if all
the items in the List are unique. All the items are unique if none of them are
the same.2 Return false otherwise.
3
2.5 Remove All Instances
Write a method called removeAllInstances() which takes in a List and item4 .
The method then proceeds to remove each item in the list that matches the given
item. For example, if the method is passed the List<Integer> [1, 4, 5, 6,
5, 5, 2] and the Integer 5, the method removes all 5’s from the List. The
List then becomes [1, 4, 6, 2]. It should return nothing, since the changes
the List it was provided. 5
You must test this on a input like the one I gave above, where
some of the items to be removed are in successive indices.. Otherwise
you will believe you have solved it, when in fact you haven’t hit the brick wall
for this problem yet.
3 Your Grade
Turn in your assignment on Canvas and come see the Professor or a TA to demo
your work for credit.
100 points Each method working properly is worth 20 points. 5 points of each
method is for using generics correctly.
4 In other words, the first parameter is a list of generics and the other input is a single item