diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray.Benchmark/DeleteElementsFromArray.Benchmark.csproj b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray.Benchmark/DeleteElementsFromArray.Benchmark.csproj
index 6cb16c7c9f..6cf2d5e433 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray.Benchmark/DeleteElementsFromArray.Benchmark.csproj
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray.Benchmark/DeleteElementsFromArray.Benchmark.csproj
@@ -2,13 +2,13 @@
Exe
- net7.0
+ net11.0
enable
enable
-
+
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray.Benchmark/DeleteElementsFromArrayBenchmark.cs b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray.Benchmark/DeleteElementsFromArrayBenchmark.cs
index c916a61c2c..0591341131 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray.Benchmark/DeleteElementsFromArrayBenchmark.cs
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray.Benchmark/DeleteElementsFromArrayBenchmark.cs
@@ -1,179 +1,59 @@
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Order;
-using System.Buffers;
+using DeleteElementsFromAnArray;
-namespace BenchmarkRunner
-{
-
- [MemoryDiagnoser]
- [Orderer(SummaryOrderPolicy.FastestToSlowest)]
- [RankColumn]
- public class DeleteElementsFromAnArrayBenchmark
- {
- private readonly int[] _myArray = FillArray();
-
- private readonly int _key = 7;
-
- [Benchmark]
- public int[] DeleteWithFindAll()
- {
- return Array.FindAll(_myArray, i => i != _key);
- }
-
- [Benchmark]
- public int[] DeleteWithRemoveAll()
- {
- var list = new List(_myArray);
- list.RemoveAll(e => e == _key);
-
- return list.ToArray();
- }
-
- [Benchmark]
- public int[] DeleteWithList()
- {
- var indexToRemove = Array.IndexOf(_myArray, _key);
-
- if (indexToRemove < 0)
- {
- return _myArray;
- }
-
- var list = new List(_myArray.Length);
-
- for (int i = 0; i < _myArray.Length; i++)
- {
- if (_myArray[i] != _key)
- {
- list.Add(_myArray[i]);
- }
- }
-
- return list.ToArray();
- }
-
- [Benchmark]
- public int[] DeleteWithWhere()
- {
- return _myArray.Where(e => e != _key).ToArray();
- }
+namespace BenchmarkRunner;
- [Benchmark]
- public int[] DeleteWithArrayCopy()
- {
- var indexToRemove = Array.IndexOf(_myArray, _key);
-
- if (indexToRemove < 0)
- {
- return _myArray;
- }
-
- var tempArray = new int[_myArray.Length - 1];
-
- Array.Copy(_myArray, 0, tempArray, 0, indexToRemove);
-
- Array.Copy(_myArray, indexToRemove + 1, tempArray, indexToRemove, _myArray.Length - indexToRemove - 1);
-
- return tempArray;
- }
+[InProcess]
+[MemoryDiagnoser]
+[Orderer(SummaryOrderPolicy.FastestToSlowest)]
+[RankColumn]
+public class DeleteElementsFromAnArrayBenchmark
+{
+ private readonly int[] _myArray = FillArray();
- [Benchmark]
- public int[] DeleteWithBufferCopy()
- {
- var indexToRemove = Array.IndexOf(_myArray, _key);
+ private readonly int _key = 7;
- if (indexToRemove < 0)
- {
- return _myArray;
- }
+ [Benchmark]
+ public int[] DeleteWithArrayCopy() => Methods.DeleteWithArrayCopy(_myArray, _key);
- var tempArray = new int[_myArray.Length - 1];
+ [Benchmark]
+ public int[] DeleteWithBufferCopy() => Methods.DeleteWithBufferCopy(_myArray, _key);
- Buffer.BlockCopy(_myArray, 0, tempArray, 0, indexToRemove * 4);
+ [Benchmark]
+ public int[] DeleteWithArraySegment() => Methods.DeleteWithArraySegment(_myArray, _key);
- Buffer.BlockCopy(_myArray, (indexToRemove + 1) * 4, tempArray, indexToRemove * 4, (_myArray.Length - indexToRemove - 1) * 4);
+ [Benchmark]
+ public int[] DeleteWithLoop() => Methods.DeleteWithLoop(_myArray, _key);
- return tempArray;
- }
+ [Benchmark]
+ public int[] DeleteWithCollectionExpression() => Methods.DeleteWithCollectionExpression(_myArray, _key);
- [Benchmark]
- public int[] DeleteWithArraySegment()
- {
- var indexToRemove = Array.IndexOf(_myArray, _key);
+ [Benchmark]
+ public int[] DeleteWithFindAll() => Methods.DeleteWithFindAll(_myArray, _key);
- if (indexToRemove < 0)
- {
- return _myArray;
- }
+ [Benchmark]
+ public int[] DeleteWithWhere() => Methods.DeleteWithWhere(_myArray, _key);
- int[] tempArray;
+ [Benchmark]
+ public int[] DeleteWithRemoveAll() => Methods.DeleteWithRemoveAll(_myArray, _key);
- var segment1 = new ArraySegment(_myArray, 0, indexToRemove);
+ [Benchmark]
+ public int[] DeleteWithList() => Methods.DeleteWithList(_myArray, _key);
- var segment2 = new ArraySegment(_myArray, indexToRemove + 1, _myArray.Length - indexToRemove - 1);
+ [Benchmark]
+ public int[] DeleteWithPooledArray() => Methods.DeleteWithPooledArray(_myArray, _key);
- tempArray = segment1.Concat(segment2).ToArray();
-
- return tempArray;
- }
-
- [Benchmark]
- public int[] DeleteWithLoop()
- {
- var indexToRemove = Array.IndexOf(_myArray, _key);
-
- if (indexToRemove < 0)
- {
- return _myArray;
- }
-
- var tempArray = new int[_myArray.Length - 1];
-
- for (int i = 0, j = 0; i < _myArray.Length; i++)
- {
- if (i == indexToRemove)
- {
- continue;
- }
- tempArray[j] = _myArray[i];
- j++;
- }
-
- return tempArray;
- }
+ private static int[] FillArray()
+ {
+ var rnd = new Random(42);
+ var myArray = new int[1000];
- [Benchmark]
- public int[] DeleteWithPooledArray()
+ for (int i = 0; i < 1000; i++)
{
- var tempArray = ArrayPool.Shared.Rent(_myArray.Length);
- try
- {
- var tempSpan = tempArray.AsSpan();
- var index = 0;
- foreach (var element in _myArray.AsSpan())
- {
- if (element != _key) tempSpan[index++] = element;
- }
-
- return tempSpan[0..index].ToArray();
- }
- finally
- {
- ArrayPool.Shared.Return(tempArray);
- }
+ myArray[i] = rnd.Next(1, 10);
}
- private static int[] FillArray()
- {
- var rnd = new Random();
- var myArray = new int[1000];
-
- for (int i = 0; i < 1000; i++)
- {
- myArray[i] = rnd.Next(1, 10);
- }
-
- return myArray;
- }
+ return myArray;
}
-}
\ No newline at end of file
+}
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray.Benchmark/Program.cs b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray.Benchmark/Program.cs
index 472c2e8e3b..940ed311e2 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray.Benchmark/Program.cs
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray.Benchmark/Program.cs
@@ -1,3 +1,4 @@
-using BenchmarkRunner;
+using BenchmarkDotNet.Running;
+using BenchmarkRunner;
-BenchmarkDotNet.Running.BenchmarkRunner.Run();
\ No newline at end of file
+BenchmarkSwitcher.FromAssembly(typeof(DeleteElementsFromAnArrayBenchmark).Assembly).Run(args);
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/DeleteElementsFromArray.csproj b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/DeleteElementsFromArray.csproj
index f02677bf64..5bf6c9b8cf 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/DeleteElementsFromArray.csproj
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/DeleteElementsFromArray.csproj
@@ -2,7 +2,7 @@
Exe
- net7.0
+ net11.0
enable
enable
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithArrayCopy.cs b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithArrayCopy.cs
index 759a596472..155552f6de 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithArrayCopy.cs
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithArrayCopy.cs
@@ -1,23 +1,21 @@
-namespace DeleteElementsFromAnArray
+namespace DeleteElementsFromAnArray;
+
+public static partial class Methods
{
- public static partial class Methods
+ public static int[] DeleteWithArrayCopy(int[] inputArray, int elementToRemove)
{
- public static int[] DeleteWithArrayCopy(int[] inputArray, int elementToRemove)
- {
- var indexToRemove = Array.IndexOf(inputArray, elementToRemove);
-
- if(indexToRemove < 0)
- {
- return inputArray;
- }
+ var indexToRemove = Array.IndexOf(inputArray, elementToRemove);
- var newArray = new int[inputArray.Length - 1];
+ if (indexToRemove < 0)
+ {
+ return inputArray;
+ }
- Array.Copy(inputArray, 0, newArray, 0, indexToRemove);
+ var tempArray = new int[inputArray.Length - 1];
- Array.Copy(inputArray, indexToRemove + 1, newArray, indexToRemove, inputArray.Length - indexToRemove - 1);
+ Array.Copy(inputArray, 0, tempArray, 0, indexToRemove);
+ Array.Copy(inputArray, indexToRemove + 1, tempArray, indexToRemove, inputArray.Length - indexToRemove - 1);
- return newArray;
- }
+ return tempArray;
}
-}
\ No newline at end of file
+}
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithArraySegment.cs b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithArraySegment.cs
index 94b3039667..2c334eace9 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithArraySegment.cs
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithArraySegment.cs
@@ -1,25 +1,19 @@
-namespace DeleteElementsFromAnArray
+namespace DeleteElementsFromAnArray;
+
+public static partial class Methods
{
- public static partial class Methods
+ public static int[] DeleteWithArraySegment(int[] inputArray, int elementToRemove)
{
- public static int[] DeleteWithArraySegment(int[] inputArray, int elementToRemove)
- {
- var indexToRemove = Array.IndexOf(inputArray, elementToRemove);
-
- if (indexToRemove < 0)
- {
- return inputArray;
- }
-
- int[] tempArray;
-
- var segment1 = new ArraySegment(inputArray, 0, indexToRemove);
+ var indexToRemove = Array.IndexOf(inputArray, elementToRemove);
- var segment2 = new ArraySegment(inputArray, indexToRemove + 1, inputArray.Length - indexToRemove - 1);
+ if (indexToRemove < 0)
+ {
+ return inputArray;
+ }
- tempArray = segment1.Concat(segment2).ToArray();
+ var segment1 = new ArraySegment(inputArray, 0, indexToRemove);
+ var segment2 = new ArraySegment(inputArray, indexToRemove + 1, inputArray.Length - indexToRemove - 1);
- return tempArray;
- }
+ return segment1.Concat(segment2).ToArray();
}
-}
\ No newline at end of file
+}
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithBufferCopy.cs b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithBufferCopy.cs
index 8a2a2b5c4f..ef6b24364d 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithBufferCopy.cs
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithBufferCopy.cs
@@ -1,23 +1,26 @@
-namespace DeleteElementsFromAnArray
+namespace DeleteElementsFromAnArray;
+
+public static partial class Methods
{
- public static partial class Methods
+ public static int[] DeleteWithBufferCopy(int[] inputArray, int elementToRemove)
{
- public static int[] DeleteWithBufferCopy(int[] inputArray, int elementToRemove)
- {
- var indexToRemove = Array.IndexOf(inputArray, elementToRemove);
+ var indexToRemove = Array.IndexOf(inputArray, elementToRemove);
- if (indexToRemove < 0)
- {
- return inputArray;
- }
+ if (indexToRemove < 0)
+ {
+ return inputArray;
+ }
- var tempArray = new int[inputArray.Length - 1];
+ var tempArray = new int[inputArray.Length - 1];
- Buffer.BlockCopy(inputArray, 0, tempArray, 0, indexToRemove * 4);
+ Buffer.BlockCopy(inputArray, 0, tempArray, 0, indexToRemove * sizeof(int));
- Buffer.BlockCopy(inputArray, (indexToRemove + 1) * 4, tempArray, indexToRemove * 4, (inputArray.Length - indexToRemove - 1) * 4);
+ Buffer.BlockCopy(inputArray,
+ (indexToRemove + 1) * sizeof(int),
+ tempArray,
+ indexToRemove * sizeof(int),
+ (inputArray.Length - indexToRemove - 1) * sizeof(int));
- return tempArray;
- }
+ return tempArray;
}
}
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithCollectionExpression.cs b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithCollectionExpression.cs
new file mode 100644
index 0000000000..1336940e5c
--- /dev/null
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithCollectionExpression.cs
@@ -0,0 +1,23 @@
+namespace DeleteElementsFromAnArray;
+
+public static partial class Methods
+{
+ public static int[] DeleteWithCollectionExpression(int[] inputArray, int elementToRemove)
+ {
+ var indexToRemove = Array.IndexOf(inputArray, elementToRemove);
+
+ if (indexToRemove < 0)
+ {
+ return inputArray;
+ }
+
+ var span = inputArray.AsSpan();
+
+ return [.. span[..indexToRemove], .. span[(indexToRemove + 1)..]];
+ }
+
+ public static int[] DeleteFirstElement(int[] inputArray)
+ {
+ return inputArray[1..];
+ }
+}
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithFindAllMethod.cs b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithFindAllMethod.cs
index f1c5930784..5d2631016b 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithFindAllMethod.cs
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithFindAllMethod.cs
@@ -1,10 +1,9 @@
-namespace DeleteElementsFromAnArray
+namespace DeleteElementsFromAnArray;
+
+public static partial class Methods
{
- public static partial class Methods
+ public static int[] DeleteWithFindAll(int[] inputArray, int elementToRemove)
{
- public static int[] DeleteWithFindAll(int[] inputArray, int elementToRemove)
- {
- return Array.FindAll(inputArray, i => i != elementToRemove);
- }
+ return Array.FindAll(inputArray, i => i != elementToRemove);
}
-}
\ No newline at end of file
+}
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithList.cs b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithList.cs
index 8d4d6cb428..3cbd93f072 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithList.cs
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithList.cs
@@ -1,27 +1,26 @@
-namespace DeleteElementsFromAnArray
+namespace DeleteElementsFromAnArray;
+
+public static partial class Methods
{
- public static partial class Methods
+ public static int[] DeleteWithList(int[] inputArray, int elementToRemove)
{
- public static int[] DeleteWithList(int[] inputArray, int elementToRemove)
- {
- var indexToRemove = Array.IndexOf(inputArray, elementToRemove);
+ var indexToRemove = Array.IndexOf(inputArray, elementToRemove);
- if (indexToRemove < 0)
- {
- return inputArray;
- }
+ if (indexToRemove < 0)
+ {
+ return inputArray;
+ }
- var list = new List(inputArray.Length);
+ var list = new List(inputArray.Length);
- for (int i = 0; i < inputArray.Length; i++)
+ for (int i = 0; i < inputArray.Length; i++)
+ {
+ if (inputArray[i] != elementToRemove)
{
- if (inputArray[i] != elementToRemove)
- {
- list.Add(inputArray[i]);
- }
+ list.Add(inputArray[i]);
}
-
- return list.ToArray();
}
+
+ return list.ToArray();
}
}
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithLoopMethod.cs b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithLoopMethod.cs
index 6caa8cf7a8..db405e1e8f 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithLoopMethod.cs
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithLoopMethod.cs
@@ -1,29 +1,42 @@
-namespace DeleteElementsFromAnArray
+namespace DeleteElementsFromAnArray;
+
+public static partial class Methods
{
- public static partial class Methods
+ public static int[] DeleteWithLoop(int[] inputArray, int elementToRemove)
{
- public static int[] DeleteWithLoop(int[] inputArray, int elementToRemove)
+ var indexToRemove = Array.IndexOf(inputArray, elementToRemove);
+
+ if (indexToRemove < 0)
{
- var indexToRemove = Array.IndexOf(inputArray, elementToRemove);
+ return inputArray;
+ }
- if (indexToRemove < 0)
+ var tempArray = new int[inputArray.Length - 1];
+
+ for (int i = 0, j = 0; i < inputArray.Length; i++)
+ {
+ if (i == indexToRemove)
{
- return inputArray;
+ continue;
}
+ tempArray[j] = inputArray[i];
+ j++;
+ }
- var tempArray = new int[inputArray.Length - 1];
+ return tempArray;
+ }
- for (int i = 0, j = 0; i < inputArray.Length; i++)
+ public static void DeleteWithLoopAndResize(ref int[] inputArray, int elementToRemove)
+ {
+ var indexToRemove = Array.IndexOf(inputArray, elementToRemove);
+ if (indexToRemove >= 0)
+ {
+ for (int i = indexToRemove; i < inputArray.Length - 1; i++)
{
- if (i == indexToRemove)
- {
- continue;
- }
- tempArray[j] = inputArray[i];
- j++;
+ inputArray[i] = inputArray[i + 1];
}
- return tempArray;
+ Array.Resize(ref inputArray, inputArray.Length - 1);
}
}
-}
\ No newline at end of file
+}
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithPooledArray.cs b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithPooledArray.cs
index d14bbb7f3c..417a2bec24 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithPooledArray.cs
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithPooledArray.cs
@@ -1,27 +1,26 @@
using System.Buffers;
-namespace DeleteElementsFromAnArray
+namespace DeleteElementsFromAnArray;
+
+public static partial class Methods
{
- public static partial class Methods
+ public static int[] DeleteWithPooledArray(int[] source, int elementToRemove)
{
- public static int[] DeleteWithPooledArray(int[] source, int elementToRemove)
+ var tempArray = ArrayPool.Shared.Rent(source.Length);
+ try
{
- var tempArray = ArrayPool.Shared.Rent(source.Length);
- try
- {
- var tempSpan = tempArray.AsSpan();
- var index = 0;
- foreach (var element in source.AsSpan())
- {
- if (element != elementToRemove) tempSpan[index++] = element;
- }
-
- return tempSpan[0..index].ToArray();
- }
- finally
+ var tempSpan = tempArray.AsSpan();
+ var index = 0;
+ foreach (var element in source.AsSpan())
{
- ArrayPool.Shared.Return(tempArray);
+ if (element != elementToRemove) tempSpan[index++] = element;
}
+
+ return tempSpan[0..index].ToArray();
+ }
+ finally
+ {
+ ArrayPool.Shared.Return(tempArray);
}
}
}
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithRemoveAllMethod.cs b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithRemoveAllMethod.cs
index f080db7c3b..653dd40597 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithRemoveAllMethod.cs
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithRemoveAllMethod.cs
@@ -1,13 +1,12 @@
-namespace DeleteElementsFromAnArray
+namespace DeleteElementsFromAnArray;
+
+public static partial class Methods
{
- public static partial class Methods
+ public static int[] DeleteWithRemoveAll(int[] inputArray, int elementToRemove)
{
- public static int[] DeleteWithRemoveAll(int[] inputArray, int elementToRemove)
- {
- var list = new List(inputArray);
- list.RemoveAll(e => e == elementToRemove);
-
- return list.ToArray();
- }
+ var list = new List(inputArray);
+ list.RemoveAll(e => e == elementToRemove);
+
+ return list.ToArray();
}
-}
\ No newline at end of file
+}
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithWhereMethod.cs b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithWhereMethod.cs
index 1df7309635..0f3a6019ba 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithWhereMethod.cs
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Methods/DeleteWithWhereMethod.cs
@@ -1,10 +1,9 @@
-namespace DeleteElementsFromAnArray
+namespace DeleteElementsFromAnArray;
+
+public static partial class Methods
{
- public static partial class Methods
+ public static int[] DeleteWithWhere(int[] inputArray, int elementToRemove)
{
- public static int[] DeleteWithWhere(int[] inputArray, int elementToRemove)
- {
- return inputArray.Where(e => e != elementToRemove).ToArray();
- }
+ return inputArray.Where(e => e != elementToRemove).ToArray();
}
-}
\ No newline at end of file
+}
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Program.cs b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Program.cs
index f6f826f44b..2b65f67e3a 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Program.cs
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArray/Program.cs
@@ -1,18 +1,26 @@
using static DeleteElementsFromAnArray.Methods;
-var array = new int[] { 3, 4, 5, 3, 5, 7 };
+int[] array = [3, 4, 5, 3, 5, 7];
var elementToDelete = 3;
-Console.WriteLine("Initial Array: " + String.Join(",", array) + " Element to delete: "+ elementToDelete);
+Console.WriteLine("Initial Array: " + string.Join(",", array) + " Element to delete: " + elementToDelete);
Console.WriteLine("Remove first instance of element: ");
-Console.WriteLine("With ArrayCopy: " + String.Join(",", DeleteWithArrayCopy(array, elementToDelete)));
-Console.WriteLine("With ArraySegment: " + String.Join(",", DeleteWithArraySegment(array, elementToDelete)));
-Console.WriteLine("With Loop: " + String.Join(",", DeleteWithLoop(array, elementToDelete)));
-Console.WriteLine("With BufferCopy: " + String.Join(",", DeleteWithBufferCopy(array, elementToDelete)));
+Console.WriteLine("With ArrayCopy: " + string.Join(",", DeleteWithArrayCopy(array, elementToDelete)));
+Console.WriteLine("With ArraySegment: " + string.Join(",", DeleteWithArraySegment(array, elementToDelete)));
+Console.WriteLine("With Loop: " + string.Join(",", DeleteWithLoop(array, elementToDelete)));
+Console.WriteLine("With BufferCopy: " + string.Join(",", DeleteWithBufferCopy(array, elementToDelete)));
+Console.WriteLine("With CollectionExpression: " + string.Join(",", DeleteWithCollectionExpression(array, elementToDelete)));
+
+var resizedArray = (int[])array.Clone();
+DeleteWithLoopAndResize(ref resizedArray, elementToDelete);
+Console.WriteLine("With Loop and Resize: " + string.Join(",", resizedArray));
Console.WriteLine("Remove every instance of the element: ");
-Console.WriteLine("With FindAll: " + String.Join(",", DeleteWithFindAll(array, elementToDelete)));
-Console.WriteLine("With Where: " + String.Join(",", DeleteWithWhere(array, elementToDelete)));
-Console.WriteLine("With RemoveAll: " + String.Join(",", DeleteWithRemoveAll(array, elementToDelete)));
-Console.WriteLine("With List: " + String.Join(",", DeleteWithList(array, elementToDelete)));
-Console.WriteLine("With Pooled Array: " + String.Join(",", DeleteWithPooledArray(array, elementToDelete)));
\ No newline at end of file
+Console.WriteLine("With FindAll: " + string.Join(",", DeleteWithFindAll(array, elementToDelete)));
+Console.WriteLine("With Where: " + string.Join(",", DeleteWithWhere(array, elementToDelete)));
+Console.WriteLine("With RemoveAll: " + string.Join(",", DeleteWithRemoveAll(array, elementToDelete)));
+Console.WriteLine("With List: " + string.Join(",", DeleteWithList(array, elementToDelete)));
+Console.WriteLine("With Pooled Array: " + string.Join(",", DeleteWithPooledArray(array, elementToDelete)));
+
+Console.WriteLine("Remove the first element: " + string.Join(",", DeleteFirstElement(array)));
+Console.WriteLine("Initial Array after all calls: " + string.Join(",", array));
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArrayUnitTests/DeleteElementsFromArrayUnitTests.cs b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArrayUnitTests/DeleteElementsFromArrayUnitTests.cs
index 20b034a45c..dd56aa0b26 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArrayUnitTests/DeleteElementsFromArrayUnitTests.cs
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArrayUnitTests/DeleteElementsFromArrayUnitTests.cs
@@ -1,178 +1,216 @@
using DeleteElementsFromAnArray;
-namespace Tests
+namespace Tests;
+
+[TestClass]
+public class DeleteElementsFromArrayUnitTests
{
- [TestClass]
- public class DefaultValueFromDictionaryUnitTests
- {
- private readonly int[] _myArray = new int[] { 3, 4, 5, 3, 5, 7 };
-
- [TestMethod]
- public void GivenMethodFindAll_WhenDeleteElement3_ThenArray4557()
- {
- var key = 3;
- var expectedResult = new int[] { 4, 5, 5, 7 };
- var value = Methods.DeleteWithFindAll(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
-
- [TestMethod]
- public void GivenMethodFindAll_WhenDeleteElement6_ThenArray345357()
- {
- var key = 6;
- var expectedResult = new int[] { 3, 4, 5, 3, 5, 7 };
- var value = Methods.DeleteWithFindAll(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
- [TestMethod]
- public void GivenMethodWhere_WhenDeleteElement3_ThenArray4557()
- {
- var key = 3;
- var expectedResult = new int[] { 4, 5, 5, 7 };
- var value = Methods.DeleteWithWhere(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
- [TestMethod]
- public void GivenMethodWhere_WhenDeleteElement6_ThenArray345357()
- {
- var key = 6;
- var expectedResult = new int[] { 3, 4, 5, 3, 5, 7 };
- var value = Methods.DeleteWithWhere(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
- [TestMethod]
- public void GivenMethodRemoveAll_WhenDeleteElement3_ThenArray4557()
- {
- var key = 3;
- var expectedResult = new int[] { 4, 5, 5, 7 };
- var value = Methods.DeleteWithRemoveAll(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
- [TestMethod]
- public void GivenMethodRemoveAll_WhenDeleteElement6_ThenArray345357()
- {
- var key = 6;
- var expectedResult = new int[] { 3, 4, 5, 3, 5, 7 };
- var value = Methods.DeleteWithRemoveAll(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
- [TestMethod]
- public void GivenMethodLoop_WhenDeleteElement3_ThenArray45357()
- {
- var key = 3;
- var expectedResult = new int[] { 4, 5, 3, 5, 7 };
- var value = Methods.DeleteWithLoop(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
- [TestMethod]
- public void GivenMethodLoop_WhenDeleteElement6_ThenArray345357()
- {
- var key = 6;
- var expectedResult = new int[] { 3, 4, 5, 3, 5, 7 };
- var value = Methods.DeleteWithLoop(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
- [TestMethod]
- public void GivenMethodArrayCopy_WhenDeleteElement3_ThenArray45357() {
- var key = 3;
- var expectedResult = new int[] { 4, 5, 3, 5, 7 };
- var value = Methods.DeleteWithArrayCopy(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
- [TestMethod]
- public void GivenMethodArrayCopy_WhenDeleteElement6_ThenArray345357() {
- var key = 6;
- var expectedResult = new int[] { 3, 4, 5, 3, 5, 7 };
- var value = Methods.DeleteWithArrayCopy(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
- [TestMethod]
- public void GivenMethodArraySegment_WhenDeleteElement3_ThenArray4557()
- {
- var key = 3;
- var expectedResult = new int[] { 4, 5, 3, 5, 7 };
- var value = Methods.DeleteWithArraySegment(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
- [TestMethod]
- public void GivenMethodArraySegment_WhenDeleteElement6_ThenArray345357() {
- var key = 6;
- var expectedResult = new int[] { 3, 4, 5, 3, 5, 7 };
- var value = Methods.DeleteWithArraySegment(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
- [TestMethod]
- public void GivenMethodBufferCopy_WhenDeleteElement3_ThenArray45357()
- {
- var key = 3;
- var expectedResult = new int[] { 4, 5, 3, 5, 7 };
- var value = Methods.DeleteWithBufferCopy(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
- [TestMethod]
- public void GivenMethodBufferCopy_WhenDeleteElement6_ThenArray345357()
- {
- var key = 6;
- var expectedResult = new int[] { 3, 4, 5, 3, 5, 7 };
- var value = Methods.DeleteWithBufferCopy(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
- [TestMethod]
- public void GivenMethodList_WhenDeleteElement3_ThenArray4557()
- {
- var key = 3;
- var expectedResult = new int[] { 4, 5, 5, 7 };
- var value = Methods.DeleteWithList(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
- [TestMethod]
- public void GivenMethodList_WhenDeleteElement6_ThenArray345357()
- {
- var key = 6;
- var expectedResult = new int[] { 3, 4, 5, 3, 5, 7 };
- var value = Methods.DeleteWithList(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
-
- [TestMethod]
- public void GivenPooledArray_WhenDeleteElement3_ThenArray4557()
- {
- var key = 3;
- var expectedResult = new int[] { 4, 5, 5, 7 };
- var value = Methods.DeleteWithPooledArray(_myArray, key);
-
- CollectionAssert.AreEqual(value, expectedResult);
- }
- }
-}
\ No newline at end of file
+ private readonly int[] _myArray = [3, 4, 5, 3, 5, 7];
+
+ [TestMethod]
+ public void GivenMethodFindAll_WhenDeleteElement3_ThenArray4557()
+ {
+ var value = Methods.DeleteWithFindAll(_myArray, 3);
+
+ CollectionAssert.AreEqual(new int[] { 4, 5, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodFindAll_WhenDeleteElement6_ThenArray345357()
+ {
+ var value = Methods.DeleteWithFindAll(_myArray, 6);
+
+ CollectionAssert.AreEqual(new int[] { 3, 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodWhere_WhenDeleteElement3_ThenArray4557()
+ {
+ var value = Methods.DeleteWithWhere(_myArray, 3);
+
+ CollectionAssert.AreEqual(new int[] { 4, 5, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodWhere_WhenDeleteElement6_ThenArray345357()
+ {
+ var value = Methods.DeleteWithWhere(_myArray, 6);
+
+ CollectionAssert.AreEqual(new int[] { 3, 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodRemoveAll_WhenDeleteElement3_ThenArray4557()
+ {
+ var value = Methods.DeleteWithRemoveAll(_myArray, 3);
+
+ CollectionAssert.AreEqual(new int[] { 4, 5, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodRemoveAll_WhenDeleteElement6_ThenArray345357()
+ {
+ var value = Methods.DeleteWithRemoveAll(_myArray, 6);
+
+ CollectionAssert.AreEqual(new int[] { 3, 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodLoop_WhenDeleteElement3_ThenArray45357()
+ {
+ var value = Methods.DeleteWithLoop(_myArray, 3);
+
+ CollectionAssert.AreEqual(new int[] { 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodLoop_WhenDeleteElement6_ThenArray345357()
+ {
+ var value = Methods.DeleteWithLoop(_myArray, 6);
+
+ CollectionAssert.AreEqual(new int[] { 3, 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodLoopAndResize_WhenDeleteElement3_ThenArray45357()
+ {
+ var array = (int[])_myArray.Clone();
+
+ Methods.DeleteWithLoopAndResize(ref array, 3);
+
+ CollectionAssert.AreEqual(new int[] { 4, 5, 3, 5, 7 }, array);
+ }
+
+ [TestMethod]
+ public void GivenMethodLoopAndResize_WhenDeleteElement6_ThenArray345357()
+ {
+ var array = (int[])_myArray.Clone();
+
+ Methods.DeleteWithLoopAndResize(ref array, 6);
+
+ CollectionAssert.AreEqual(new int[] { 3, 4, 5, 3, 5, 7 }, array);
+ }
+
+ [TestMethod]
+ public void GivenMethodArrayCopy_WhenDeleteElement3_ThenArray45357()
+ {
+ var value = Methods.DeleteWithArrayCopy(_myArray, 3);
+
+ CollectionAssert.AreEqual(new int[] { 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodArrayCopy_WhenDeleteElement6_ThenArray345357()
+ {
+ var value = Methods.DeleteWithArrayCopy(_myArray, 6);
+
+ CollectionAssert.AreEqual(new int[] { 3, 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodArraySegment_WhenDeleteElement3_ThenArray45357()
+ {
+ var value = Methods.DeleteWithArraySegment(_myArray, 3);
+
+ CollectionAssert.AreEqual(new int[] { 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodArraySegment_WhenDeleteElement6_ThenArray345357()
+ {
+ var value = Methods.DeleteWithArraySegment(_myArray, 6);
+
+ CollectionAssert.AreEqual(new int[] { 3, 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodBufferCopy_WhenDeleteElement3_ThenArray45357()
+ {
+ var value = Methods.DeleteWithBufferCopy(_myArray, 3);
+
+ CollectionAssert.AreEqual(new int[] { 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodBufferCopy_WhenDeleteElement6_ThenArray345357()
+ {
+ var value = Methods.DeleteWithBufferCopy(_myArray, 6);
+
+ CollectionAssert.AreEqual(new int[] { 3, 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodCollectionExpression_WhenDeleteElement3_ThenArray45357()
+ {
+ var value = Methods.DeleteWithCollectionExpression(_myArray, 3);
+
+ CollectionAssert.AreEqual(new int[] { 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodCollectionExpression_WhenDeleteElement7_ThenArray34535()
+ {
+ var value = Methods.DeleteWithCollectionExpression(_myArray, 7);
+
+ CollectionAssert.AreEqual(new int[] { 3, 4, 5, 3, 5 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodCollectionExpression_WhenDeleteElement6_ThenArray345357()
+ {
+ var value = Methods.DeleteWithCollectionExpression(_myArray, 6);
+
+ CollectionAssert.AreEqual(new int[] { 3, 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodList_WhenDeleteElement3_ThenArray4557()
+ {
+ var value = Methods.DeleteWithList(_myArray, 3);
+
+ CollectionAssert.AreEqual(new int[] { 4, 5, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenMethodList_WhenDeleteElement6_ThenArray345357()
+ {
+ var value = Methods.DeleteWithList(_myArray, 6);
+
+ CollectionAssert.AreEqual(new int[] { 3, 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenPooledArray_WhenDeleteElement3_ThenArray4557()
+ {
+ var value = Methods.DeleteWithPooledArray(_myArray, 3);
+
+ CollectionAssert.AreEqual(new int[] { 4, 5, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenPooledArray_WhenDeleteElement6_ThenArray345357()
+ {
+ var value = Methods.DeleteWithPooledArray(_myArray, 6);
+
+ CollectionAssert.AreEqual(new int[] { 3, 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenAnArray_WhenDeleteFirstElement_ThenArray45357()
+ {
+ var value = Methods.DeleteFirstElement(_myArray);
+
+ CollectionAssert.AreEqual(new int[] { 4, 5, 3, 5, 7 }, value);
+ }
+
+ [TestMethod]
+ public void GivenAnyDeleteMethod_WhenDeleteElement3_ThenInputArrayIsUnchanged()
+ {
+ Methods.DeleteWithArrayCopy(_myArray, 3);
+ Methods.DeleteWithCollectionExpression(_myArray, 3);
+ Methods.DeleteWithWhere(_myArray, 3);
+ Methods.DeleteWithPooledArray(_myArray, 3);
+
+ CollectionAssert.AreEqual(new int[] { 3, 4, 5, 3, 5, 7 }, _myArray);
+ }
+}
diff --git a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArrayUnitTests/Tests.csproj b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArrayUnitTests/Tests.csproj
index fda5d38102..495e6cc504 100644
--- a/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArrayUnitTests/Tests.csproj
+++ b/collections-arrays/DeleteElementsFromArray/DeleteElementsFromArrayUnitTests/Tests.csproj
@@ -1,7 +1,7 @@
- net7.0
+ net11.0
enable
enable
@@ -9,10 +9,10 @@
-
-
-
-
+
+
+
+