From 4a762f39b92193912a8b73c000f5144d2cfd8755 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Thu, 28 Sep 2017 18:22:16 +0200 Subject: [PATCH] add special implementation for add The special implementation does not need to allocate an array for the varargs of addAll --- .../main/java/org/lucares/collections/IntList.java | 7 ++++--- .../java/org/lucares/collections/IntListTest.java | 12 +++++++----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/primitiveCollections/src/main/java/org/lucares/collections/IntList.java b/primitiveCollections/src/main/java/org/lucares/collections/IntList.java index 731997b..e6dc760 100644 --- a/primitiveCollections/src/main/java/org/lucares/collections/IntList.java +++ b/primitiveCollections/src/main/java/org/lucares/collections/IntList.java @@ -112,9 +112,10 @@ public class IntList { * the value to add */ public void add(final int value) { - // TODO add a special implementation that does not - // need to allocate an array for the varargs of addAll - addAll(value); + ensureCapacity(1); + + data[index] = value; + index++; } /** diff --git a/primitiveCollections/src/test/java/org/lucares/collections/IntListTest.java b/primitiveCollections/src/test/java/org/lucares/collections/IntListTest.java index 22824f3..e7b3290 100644 --- a/primitiveCollections/src/test/java/org/lucares/collections/IntListTest.java +++ b/primitiveCollections/src/test/java/org/lucares/collections/IntListTest.java @@ -39,11 +39,9 @@ public class IntListTest { @Test public void testAdd() { - final IntList list = new IntList(); - - list.addAll(); - Assert.assertTrue(list.isEmpty()); - Assert.assertEquals(0, list.size()); + // setting initial size to one, so that the first add does not need to resize, + // but the second add must + final IntList list = new IntList(1); list.add(1); @@ -179,6 +177,10 @@ public class IntListTest { public void testAddArray() { final IntList list = new IntList(); + list.addAll(); + Assert.assertTrue(list.isEmpty()); + Assert.assertEquals(0, list.size()); + final int size = 100; final int[] ints = ThreadLocalRandom.current().ints(size).toArray();