Skip to content

Instantly share code, notes, and snippets.

@tacksoo
Created February 12, 2013 14:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tacksoo/4770349 to your computer and use it in GitHub Desktop.
Save tacksoo/4770349 to your computer and use it in GitHub Desktop.
Example of an ineffective use of the LinkedList
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
public class LinkedListFail {
/*
* This is slow
*/
public static ArrayList<Integer> removeEvensInArrayList(ArrayList<Integer> list) {
for (int i = 0; i < list.size(); i++)
{
if (list.get(i) % 2 == 0)
list.remove(i);
}
return list;
}
/*
* This is slower
*/
public static LinkedList<Integer> removeEvensInLinkedList(LinkedList<Integer> list) {
for (int i = 0; i < list.size(); i++)
{
if (list.get(i) % 2 == 0)
list.remove(i);
}
return list;
}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Random;
import org.junit.Before;
import org.junit.Test;
public class LinkedListFailTest {
private ArrayList<Integer> al;
private LinkedList<Integer> ll;
@Before
public void setUp() throws Exception {
// Integer [] nums = new Integer[]{1,2,3,4,5,6,7,8,9,10};
Integer[] nums = new Integer[100000];
Random r = new Random();
for (int i = 0; i < nums.length; i++) {
nums[i] = r.nextInt(1000000);
}
al = new ArrayList<Integer>(Arrays.asList(nums));
ll = new LinkedList<Integer>(Arrays.asList(nums));
}
@Test
public void testRemoveEvensInLinkedList() {
LinkedListFail.removeEvensInLinkedList(ll);
}
@Test
public void testRemoveEvensInArrayList() {
LinkedListFail.removeEvensInArrayList(al);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment