diff --git a/primitiveCollections/src/main/java/org/lucares/collections/IntList.java b/primitiveCollections/src/main/java/org/lucares/collections/IntList.java index 65c5e40..3d14124 100644 --- a/primitiveCollections/src/main/java/org/lucares/collections/IntList.java +++ b/primitiveCollections/src/main/java/org/lucares/collections/IntList.java @@ -10,10 +10,8 @@ import java.util.List; * This class does not (yet) implements all methods a java.util {@link List} * would have. */ -public class IntList implements Serializable { +public class IntList implements Serializable, Cloneable { - // TODO make Serializable - // TODO make Cloneable // TODO support Iterator // TODO add mod counts // TODO support sublists @@ -28,7 +26,7 @@ public class IntList implements Serializable { // TODO add toArray(int[] a) // TODO remove bounds checks that are handled by java, e.g. negative indices - private static final long serialVersionUID = 2588449582065895141L; + private static final long serialVersionUID = -6823520157007564746L; private static final int DEFAULT_CAPACITY = 10; @@ -399,4 +397,15 @@ public class IntList implements Serializable { data = local_data; } } + + @Override + public IntList clone() { + try { + final IntList result = (IntList) super.clone(); + result.data = Arrays.copyOf(data, index); + return result; + } catch (final CloneNotSupportedException e) { + throw new IllegalStateException(e); + } + } } diff --git a/primitiveCollections/src/test/java/org/lucares/collections/IntListTest.java b/primitiveCollections/src/test/java/org/lucares/collections/IntListTest.java index 40fe282..b85f61f 100644 --- a/primitiveCollections/src/test/java/org/lucares/collections/IntListTest.java +++ b/primitiveCollections/src/test/java/org/lucares/collections/IntListTest.java @@ -455,4 +455,17 @@ public class IntListTest { list.size(), actual.getCapacity()); } } + + @Test + public void testClone() { + final IntList list = new IntList(); + list.addAll(1, 2); + + final IntList clone = list.clone(); + + Assert.assertEquals(list, clone); + + list.set(1, 0); + Assert.assertNotEquals(list, clone); + } }