On this page:
5.1 Submission
5.2 The Convolve higher-order function
5.2.1 Practice with higher order functions
5.2.2 The Convolve operation
5.2.3 A Pair sequence
6.10

Lab 5: Generics and higher-order functions

Related files:
  IList.java  

5.1 Submission

Submit your solution for finding all months that begin with the letter ’J’ on the handin server by 5/26 10:00pm EDT.

5.2 The Convolve higher-order function

Explore Java’s functional and comparator interfaces.

We have seen the following higher-order functions (here using Java’s functional interface):

You can find an implementation of these operations in the attached code.

5.2.1 Practice with higher order functions

Create a list of strings using the provided IList<T> interface and classes. The list should contains the months of the year. Write tests for the following, using higher-order functions:

5.2.2 The Convolve operation

The convolve operation is best understood using lists of numbers. Consider two lists W and L of numbers, of the same length. The convolution of these two lists produces a list that represents their per-element combination in some way. For example, a list of numbers C can be produced where each element in C is the product of the respective elements in W and C. If W=[0.3 0.5 0.1 -0.3] and L=[2.0 4.0 3.0 1.0] then C=[0.6 2.0 0.3 -0.3]. Another convolution can be the concatenation: CO=[0.3,2.0 0.5,4.0 0.1,3.0 -0.3,1.0]. If the lists are not the same length, then the length of the result is equal to the smaller of the two lengths. For example if W=[0.3 0.5 0.1] and L=[2.0 4.0 3.0 1.0] then CO=[0.3,2.0 0.5,4.0 0.1,3.0].

Implement the convolve operation on lists. We recommend that you approach this problem as follows:

5.2.3 A Pair sequence

Use the convolve operation to create a list that creates a list of pairs of the objects in the two lists. For example, a list of months of the year and a list of the number of days in each months can be convolved into a list of (month,days) pairs.