Create the class ResizableArrayBag following the description in questions 12, 13, 14, 15, and 16 from the book.
The class ResizableArrayBag has an array that can grow in size as objects are added to the bag. Revise the class so that its array also can shrink in size as objects are removed from the bag. Accomplishing this task will require two new private methods, as follows:
The first new method checks whether we should reduce the size of the array:
private boolean isTooBig()
This method returns true if the number of entries in the bag is less than half the size of the array and the size of the array is greater than 20.
The second new method creates a new array that is three quarters the size of the current array and then copies the objects in the bag to the new array:
private void reduceArray()
Implement each of these two methods, and then use them in the definitions of the two remove methods
Consider the two private methods described in the previous exercise.
a. The method isTooBig requires the size of the array to be greater than 20. What problem could occur if this requirement is dropped?
b. The method reduceArray is not analogous to the method ensureCapacity in that it does not reduce the size of the array by one half. What problem could occur if the size of the array is reduced by one half instead of three quarters?
Define the method union , as described in Exercise 5 of the previous chapter, for the class ResizableArrayBag .
Define the method intersection , as described in Exercise 6 of the previous chapter, for the class ResizableArrayBag .
Define the method difference , as described in Exercise 7 of the previous chapter, for the class ResizableArrayBag