As the title says, I'm trying to make my code less horrible looking! For a university practical, I've to use recursive methods to return the even references in a collection of Integer objects stored in an ArrayList. For example, if the input is [1, 2, 3, 4], my method should return [1, 3] (i.e. elements 0 and 2, the even elements).
My code works, but I feel is horrible:
import java.util.*;
public class ListMethods {
public static ArrayList<Integer> evenList (ArrayList<Integer> tList) {
ArrayList<Integer> newList = ListMethods.deepClone(tList);
int tempStorage = newList.size();
if (newList.size() <= 0)
return newList;
else
{
if (newList.size()%2==0)
tempStorage = newList.remove(newList.size()-2);
newList.remove(newList.size()-1);
newList = ListMethods.evenList(newList);
if (tempStorage!=0)
newList.add(tempStorage);
}
return newList;
}
public static ArrayList<Integer> deepClone (ArrayList<Integer> tList) {
ArrayList<Integer> list = new ArrayList<Integer>();
for (Integer i : tList)
list.add(new Integer(i));
return list;
}
public static void main (String[] args) {
ArrayList<Integer> tempList = new ArrayList<Integer>();
tempList.add(1);
tempList.add(2);
tempList.add(3);
tempList.add(4);
tempList.add(5);
tempList.add(6);
for (Integer i : tempList)
{ System.out.println (i); }
ArrayList<Integer> evenList = ListMethods.evenList(tempList);
System.out.println();
for (Integer i : evenList)
{ System.out.println (i); }
}
}
The cloning section I have to include, at our lecturer's request. The real part I'm looking to tidy up is the if/else inside the evenList method.
Does anybody have any ideas? Kind regards in advance.