The following imperative method takes a list of integers and returns a list cons
ID: 3577484 • Letter: T
Question
The following imperative method takes a list of integers and returns a list consisting of
all the even integers in the original list (in the original order).
def getEvens(input: List[Int]): List[Int] = {
var currentList = input
var resultList: List[Int] = List()
while (currentList.length != 0) {
if (currentList(0) % 2 == 0) {
resultList = currentList(0) :: resultList
}
currentList = currentList.tail
}
resultList.reverse
}
a) Rewrite this method in a purely functional style using list pattern matching and
recursion.
b) Rewrite it a second time in a purely functional style using the filter higher order
method.
Explanation / Answer
a)
Program
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class Evennumber {
static int i=0;
public static ArrayList<Integer> findEvens(ArrayList a) {
ArrayList<Integer> newlist = new ArrayList<Integer>();
for (Iterator<Integer> iterator = a.iterator(); iterator.hasNext();) {
Integer number = iterator.next();
if (number % 2 != 0) {
a.remove(i);
return findEvens(a);
}
}
return a;
}
public static void main(String[] args) {
ArrayList<Integer> original = new ArrayList<Integer>();
ArrayList<Integer> evenlist = new ArrayList<Integer>();
original.add(1);
original.add(3);
original.add(7);
original.add(8);
original.add(4);
original.add(2);
System.out.println(original);
evenlist=findEvens(original);
System.out.println("Even list using Recursive Method :"+evenlist);
}
}
b)
Program
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class Evennumber {
public static ArrayList<Integer> sorting(ArrayList a1){
Collections.sort(a1);
Collections.reverse(a1);
return a1;
}
public static void main(String[] args) {
ArrayList<Integer> original = new ArrayList<Integer>();
ArrayList<Integer> sortlist = new ArrayList<Integer>();
original.add(1);
original.add(3);
original.add(7);
original.add(8);
original.add(4);
original.add(2);
System.out.println(original);
sortlist=sorting(original);
System.out.println("Sorted List :"+sortlist);
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.