From d1d455ed3b73743268712ebb3d4113ab603d2581 Mon Sep 17 00:00:00 2001 From: Scribble Date: Sat, 6 Sep 2025 17:07:37 +0200 Subject: [PATCH 1/2] Add addAll, clear methods - Bump version --- gradle.properties | 2 +- .../dselent/bigarraylist/BigArrayList.java | 30 +++++ .../dselent/bigarraylist/CacheMapping.java | 2 +- .../dselent/bigarraylist/FileAccessor.java | 5 +- src/test/java/BigArrayListTest.java | 121 ++++++++++++++---- 5 files changed, 130 insertions(+), 30 deletions(-) diff --git a/gradle.properties b/gradle.properties index d273149..8585e4a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version=1.5 +version=1.6 release=false \ No newline at end of file diff --git a/src/main/java/com/dselent/bigarraylist/BigArrayList.java b/src/main/java/com/dselent/bigarraylist/BigArrayList.java index 5a23524..fc89c3b 100644 --- a/src/main/java/com/dselent/bigarraylist/BigArrayList.java +++ b/src/main/java/com/dselent/bigarraylist/BigArrayList.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; +import java.util.Collection; import java.util.Comparator; import java.util.Iterator; import java.util.List; @@ -1078,4 +1079,33 @@ public E next() { } }; } + + /** + * @param other The other BigArrayList + * @see ArrayList#addAll(Collection) + */ + public void addAll(BigArrayList other) { + for (E element : other) { + add(element); + } + } + + /** + * @param other The other collection + * @see ArrayList#addAll(Collection) + */ + public void addAll(Collection other) { + for (E element : other) { + add(element); + } + } + + /** + * Clears all elements without clearing the memory + */ + public void clear() { + for (long i = wholeListSize-1; i >= 0; i--) { + remove(i); + } + } } diff --git a/src/main/java/com/dselent/bigarraylist/CacheMapping.java b/src/main/java/com/dselent/bigarraylist/CacheMapping.java index 275fd65..a3aca94 100644 --- a/src/main/java/com/dselent/bigarraylist/CacheMapping.java +++ b/src/main/java/com/dselent/bigarraylist/CacheMapping.java @@ -499,4 +499,4 @@ protected void clearMemory() throws IOException { fileAccessor.clearMemory(); } -} \ No newline at end of file +} diff --git a/src/main/java/com/dselent/bigarraylist/FileAccessor.java b/src/main/java/com/dselent/bigarraylist/FileAccessor.java index 7b396e3..6677d20 100644 --- a/src/main/java/com/dselent/bigarraylist/FileAccessor.java +++ b/src/main/java/com/dselent/bigarraylist/FileAccessor.java @@ -368,9 +368,6 @@ protected void clearMemory() throws IOException } } } - //don't delete the folder, other things may be using it - } - -} \ No newline at end of file +} diff --git a/src/test/java/BigArrayListTest.java b/src/test/java/BigArrayListTest.java index 9019844..b69ee44 100644 --- a/src/test/java/BigArrayListTest.java +++ b/src/test/java/BigArrayListTest.java @@ -13,6 +13,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; import static org.junit.jupiter.api.Assertions.assertIterableEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; public class BigArrayListTest { @@ -27,7 +28,7 @@ public class BigArrayListTest private static int maxActions; private static Random random; - private BigArrayList bigArrayList; + private BigArrayList actualMonte; @BeforeAll static void setUp() throws Exception @@ -47,9 +48,9 @@ static void setUp() throws Exception @AfterEach protected void tearDown() throws Exception { - if(bigArrayList != null) + if(actualMonte != null) { - bigArrayList.clearMemory(); + actualMonte.clearMemory(); } } @@ -68,7 +69,7 @@ public void testBigArrayList() int cacheBlocks = random.nextInt(maxCacheBlocks- minCacheBlocks) + minCacheBlocks; int actions = random.nextInt(maxActions-minActions) + minActions; - bigArrayList = new BigArrayList(blockSize, cacheBlocks); + actualMonte = new BigArrayList(blockSize, cacheBlocks); List arrayList = new ArrayList<>(); for(int j=0; j otherBigArrayList = (BigArrayList) otherObject; - return isEqual; + if (wholeListSize != otherBigArrayList.size()) { + return false; + } + if (liveObject != otherBigArrayList.isLive()) { + return false; + } + + Iterator thisIterator = this.iterator(); + Iterator otherIterator = otherBigArrayList.iterator(); + while (thisIterator.hasNext() && otherIterator.hasNext()) { + E o1 = thisIterator.next(); + Object o2 = otherIterator.next(); + if (!(o1==null ? o2==null : o1.equals(o2))) + return false; + } + return !(thisIterator.hasNext() || otherIterator.hasNext()); } @Override