Today I was looking in cloning an ArrayList when I ran in a weird problem.
I read this answer and tried that. However, I received an ArrayOutOfBounds exception. So I looked a bit more into it, and appearently the ArrayList<>(int size) is not working?
Is this a known problem?
Test class:
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
public class ArrayListTest {
@Test
public void test() {
List<String> lista = new ArrayList<>();
lista.add("a");
List<String> listb = new ArrayList<>(lista.size());
System.out.println("Size of lista: " + lista.size());
System.out.println("Size of listb: " + listb.size());
}
}
Troubled class:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
public class ArrayListTest2 {
@Test
public void test() {
List<String> lista = new ArrayList<>();
lista.add("a");
List<String> listb = new ArrayList<>(lista.size());
Collections.copy(listb, lista);
System.out.println("Lista: " + lista);
System.out.println("Listb: " + listb);
}
}
Which results in:
java.lang.IndexOutOfBoundsException: Source does not fit in dest
at java.util.Collections.copy(Collections.java:556)
at ArrayListTest2.test(ArrayListTest2.java:13)
Any ideas?