diff --git a/spotbugs-exclude.xml b/spotbugs-exclude.xml index bfc771673..14bc5dfe9 100644 --- a/spotbugs-exclude.xml +++ b/spotbugs-exclude.xml @@ -87,9 +87,6 @@ - - - diff --git a/src/main/java/com/thealgorithms/backtracking/CrosswordSolver.java b/src/main/java/com/thealgorithms/backtracking/CrosswordSolver.java index cbd9f70f7..6bfb026c7 100644 --- a/src/main/java/com/thealgorithms/backtracking/CrosswordSolver.java +++ b/src/main/java/com/thealgorithms/backtracking/CrosswordSolver.java @@ -1,6 +1,7 @@ package com.thealgorithms.backtracking; import java.util.ArrayList; +import java.util.Collection; import java.util.List; /** @@ -95,7 +96,7 @@ public final class CrosswordSolver { * @param words The list of words to be placed. * @return true if the crossword is solved, false otherwise. */ - public static boolean solveCrossword(char[][] puzzle, List words) { + public static boolean solveCrossword(char[][] puzzle, Collection words) { // Create a mutable copy of the words list List remainingWords = new ArrayList<>(words); diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/AStar.java b/src/main/java/com/thealgorithms/datastructures/graphs/AStar.java index 460c05e04..741caa59c 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/AStar.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/AStar.java @@ -94,7 +94,7 @@ public final class AStar { } // Initializes the graph with edges defined in the input data - static void initializeGraph(Graph graph, ArrayList data) { + static void initializeGraph(Graph graph, List data) { for (int i = 0; i < data.size(); i += 4) { graph.addEdge(new Edge(data.get(i), data.get(i + 1), data.get(i + 2))); } diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/EdmondsBlossomAlgorithm.java b/src/main/java/com/thealgorithms/datastructures/graphs/EdmondsBlossomAlgorithm.java index 27ad96d71..db716580d 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/EdmondsBlossomAlgorithm.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/EdmondsBlossomAlgorithm.java @@ -30,7 +30,7 @@ public final class EdmondsBlossomAlgorithm { * @param vertexCount The number of vertices in the graph. * @return A list of matched pairs of vertices. */ - public static List maximumMatching(List edges, int vertexCount) { + public static List maximumMatching(Iterable edges, int vertexCount) { List> graph = new ArrayList<>(vertexCount); // Initialize each vertex's adjacency list. diff --git a/src/main/java/com/thealgorithms/datastructures/lists/MergeSortedArrayList.java b/src/main/java/com/thealgorithms/datastructures/lists/MergeSortedArrayList.java index 99ab09f81..e315c4236 100644 --- a/src/main/java/com/thealgorithms/datastructures/lists/MergeSortedArrayList.java +++ b/src/main/java/com/thealgorithms/datastructures/lists/MergeSortedArrayList.java @@ -1,6 +1,7 @@ package com.thealgorithms.datastructures.lists; import java.util.ArrayList; +import java.util.Collection; import java.util.List; /** @@ -38,7 +39,7 @@ public final class MergeSortedArrayList { * @param listB the second list to merge * @param listC the result list after merging */ - public static void merge(List listA, List listB, List listC) { + public static void merge(List listA, List listB, Collection listC) { int pa = 0; /* the index of listA */ int pb = 0; diff --git a/src/main/java/com/thealgorithms/geometry/ConvexHull.java b/src/main/java/com/thealgorithms/geometry/ConvexHull.java index 19cecdc3a..17f400854 100644 --- a/src/main/java/com/thealgorithms/geometry/ConvexHull.java +++ b/src/main/java/com/thealgorithms/geometry/ConvexHull.java @@ -1,6 +1,7 @@ package com.thealgorithms.geometry; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.HashSet; @@ -89,7 +90,7 @@ public final class ConvexHull { return result; } - private static void constructHull(List points, Point left, Point right, Set convexSet) { + private static void constructHull(Collection points, Point left, Point right, Set convexSet) { if (!points.isEmpty()) { Point extremePoint = null; int extremePointDistance = Integer.MIN_VALUE; diff --git a/src/main/java/com/thealgorithms/maths/CircularConvolutionFFT.java b/src/main/java/com/thealgorithms/maths/CircularConvolutionFFT.java index f7010acf4..87fc5af57 100644 --- a/src/main/java/com/thealgorithms/maths/CircularConvolutionFFT.java +++ b/src/main/java/com/thealgorithms/maths/CircularConvolutionFFT.java @@ -1,6 +1,7 @@ package com.thealgorithms.maths; import java.util.ArrayList; +import java.util.Collection; /** * Class for circular convolution of two discrete signals using the convolution @@ -19,7 +20,7 @@ public final class CircularConvolutionFFT { * @param x The signal to be padded. * @param newSize The new size of the signal. */ - private static void padding(ArrayList x, int newSize) { + private static void padding(Collection x, int newSize) { if (x.size() < newSize) { int diff = newSize - x.size(); for (int i = 0; i < diff; i++) { diff --git a/src/main/java/com/thealgorithms/maths/ConvolutionFFT.java b/src/main/java/com/thealgorithms/maths/ConvolutionFFT.java index ce35b02ca..ed1ba1bbe 100644 --- a/src/main/java/com/thealgorithms/maths/ConvolutionFFT.java +++ b/src/main/java/com/thealgorithms/maths/ConvolutionFFT.java @@ -1,6 +1,7 @@ package com.thealgorithms.maths; import java.util.ArrayList; +import java.util.Collection; /** * Class for linear convolution of two discrete signals using the convolution @@ -19,7 +20,7 @@ public final class ConvolutionFFT { * @param x The signal to be padded. * @param newSize The new size of the signal. */ - private static void padding(ArrayList x, int newSize) { + private static void padding(Collection x, int newSize) { if (x.size() < newSize) { int diff = newSize - x.size(); for (int i = 0; i < diff; i++) { diff --git a/src/main/java/com/thealgorithms/maths/FFT.java b/src/main/java/com/thealgorithms/maths/FFT.java index 7ca7543d7..47605f010 100644 --- a/src/main/java/com/thealgorithms/maths/FFT.java +++ b/src/main/java/com/thealgorithms/maths/FFT.java @@ -1,6 +1,7 @@ package com.thealgorithms.maths; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; /** @@ -274,7 +275,7 @@ public final class FFT { * * @param x The ArrayList to be padded. */ - private static void paddingPowerOfTwo(ArrayList x) { + private static void paddingPowerOfTwo(Collection x) { int n = 1; int oldSize = x.size(); while (n < oldSize) { diff --git a/src/main/java/com/thealgorithms/maths/FFTBluestein.java b/src/main/java/com/thealgorithms/maths/FFTBluestein.java index 388de6fed..7a03c20cc 100644 --- a/src/main/java/com/thealgorithms/maths/FFTBluestein.java +++ b/src/main/java/com/thealgorithms/maths/FFTBluestein.java @@ -1,6 +1,7 @@ package com.thealgorithms.maths; import java.util.ArrayList; +import java.util.List; /** * Class for calculating the Fast Fourier Transform (FFT) of a discrete signal @@ -25,7 +26,7 @@ public final class FFTBluestein { * IFFT of signal x. * @param inverse True if you want to find the inverse FFT. */ - public static void fftBluestein(ArrayList x, boolean inverse) { + public static void fftBluestein(List x, boolean inverse) { int n = x.size(); int bnSize = 2 * n - 1; int direction = inverse ? -1 : 1; diff --git a/src/main/java/com/thealgorithms/maths/Gaussian.java b/src/main/java/com/thealgorithms/maths/Gaussian.java index 255a84d13..1e0257975 100644 --- a/src/main/java/com/thealgorithms/maths/Gaussian.java +++ b/src/main/java/com/thealgorithms/maths/Gaussian.java @@ -1,12 +1,13 @@ package com.thealgorithms.maths; import java.util.ArrayList; +import java.util.List; public final class Gaussian { private Gaussian() { } - public static ArrayList gaussian(int matSize, ArrayList matrix) { + public static ArrayList gaussian(int matSize, List matrix) { int i; int j = 0; diff --git a/src/main/java/com/thealgorithms/maths/NthUglyNumber.java b/src/main/java/com/thealgorithms/maths/NthUglyNumber.java index 905077013..6484026c1 100644 --- a/src/main/java/com/thealgorithms/maths/NthUglyNumber.java +++ b/src/main/java/com/thealgorithms/maths/NthUglyNumber.java @@ -2,6 +2,7 @@ package com.thealgorithms.maths; import java.util.ArrayList; import java.util.Arrays; +import java.util.Map; import org.apache.commons.lang3.tuple.MutablePair; /** @@ -64,7 +65,7 @@ public class NthUglyNumber { } } - private long computeCandidate(final MutablePair entry) { + private long computeCandidate(final Map.Entry entry) { return entry.getKey() * uglyNumbers.get(entry.getValue()); } diff --git a/src/main/java/com/thealgorithms/misc/MedianOfMatrix.java b/src/main/java/com/thealgorithms/misc/MedianOfMatrix.java index d4ddffe8d..edeedbbee 100644 --- a/src/main/java/com/thealgorithms/misc/MedianOfMatrix.java +++ b/src/main/java/com/thealgorithms/misc/MedianOfMatrix.java @@ -13,7 +13,7 @@ public final class MedianOfMatrix { private MedianOfMatrix() { } - public static int median(List> matrix) { + public static int median(Iterable> matrix) { // Flatten the matrix into a 1D list List linear = new ArrayList<>(); for (List row : matrix) { diff --git a/src/main/java/com/thealgorithms/misc/PalindromeSinglyLinkedList.java b/src/main/java/com/thealgorithms/misc/PalindromeSinglyLinkedList.java index 8af8a9b03..51dc099ba 100644 --- a/src/main/java/com/thealgorithms/misc/PalindromeSinglyLinkedList.java +++ b/src/main/java/com/thealgorithms/misc/PalindromeSinglyLinkedList.java @@ -1,6 +1,5 @@ package com.thealgorithms.misc; -import com.thealgorithms.datastructures.lists.SinglyLinkedList; import java.util.Stack; /** @@ -15,8 +14,8 @@ public final class PalindromeSinglyLinkedList { private PalindromeSinglyLinkedList() { } - public static boolean isPalindrome(final SinglyLinkedList linkedList) { - Stack linkedListValues = new Stack<>(); + public static boolean isPalindrome(final Iterable linkedList) { + var linkedListValues = new Stack<>(); for (final var x : linkedList) { linkedListValues.push(x); diff --git a/src/main/java/com/thealgorithms/others/KochSnowflake.java b/src/main/java/com/thealgorithms/others/KochSnowflake.java index 0e2600a7d..46b8edb1f 100644 --- a/src/main/java/com/thealgorithms/others/KochSnowflake.java +++ b/src/main/java/com/thealgorithms/others/KochSnowflake.java @@ -7,6 +7,7 @@ import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.List; import javax.imageio.ImageIO; /** @@ -125,7 +126,7 @@ public final class KochSnowflake { * applied. * @return The transformed vectors after the iteration-step. */ - private static ArrayList iterationStep(ArrayList vectors) { + private static ArrayList iterationStep(List vectors) { ArrayList newVectors = new ArrayList(); for (int i = 0; i < vectors.size() - 1; i++) { Vector2 startVector = vectors.get(i); diff --git a/src/main/java/com/thealgorithms/scheduling/PreemptivePriorityScheduling.java b/src/main/java/com/thealgorithms/scheduling/PreemptivePriorityScheduling.java index 27d85a94d..66c99661d 100644 --- a/src/main/java/com/thealgorithms/scheduling/PreemptivePriorityScheduling.java +++ b/src/main/java/com/thealgorithms/scheduling/PreemptivePriorityScheduling.java @@ -2,6 +2,7 @@ package com.thealgorithms.scheduling; import com.thealgorithms.devutils.entities.ProcessDetails; import java.util.ArrayList; +import java.util.Collection; import java.util.Comparator; import java.util.List; import java.util.PriorityQueue; @@ -15,7 +16,7 @@ public class PreemptivePriorityScheduling { protected final List processes; protected final List ganttChart; - public PreemptivePriorityScheduling(List processes) { + public PreemptivePriorityScheduling(Collection processes) { this.processes = new ArrayList<>(processes); this.ganttChart = new ArrayList<>(); } diff --git a/src/main/java/com/thealgorithms/scheduling/SJFScheduling.java b/src/main/java/com/thealgorithms/scheduling/SJFScheduling.java index ca2144e49..6d105003e 100644 --- a/src/main/java/com/thealgorithms/scheduling/SJFScheduling.java +++ b/src/main/java/com/thealgorithms/scheduling/SJFScheduling.java @@ -2,6 +2,7 @@ package com.thealgorithms.scheduling; import com.thealgorithms.devutils.entities.ProcessDetails; import java.util.ArrayList; +import java.util.List; /** * Implementation of Shortest Job First Algorithm: The algorithm allows the waiting process with the @@ -87,7 +88,7 @@ public class SJFScheduling { * @return returns the process' with the shortest burst time OR NULL if there are no ready * processes */ - private ProcessDetails findShortestJob(ArrayList readyProcesses) { + private ProcessDetails findShortestJob(List readyProcesses) { if (readyProcesses.isEmpty()) { return null; } diff --git a/src/main/java/com/thealgorithms/scheduling/diskscheduling/SSFScheduling.java b/src/main/java/com/thealgorithms/scheduling/diskscheduling/SSFScheduling.java index 30838821a..261c1a388 100644 --- a/src/main/java/com/thealgorithms/scheduling/diskscheduling/SSFScheduling.java +++ b/src/main/java/com/thealgorithms/scheduling/diskscheduling/SSFScheduling.java @@ -1,6 +1,7 @@ package com.thealgorithms.scheduling.diskscheduling; import java.util.ArrayList; +import java.util.Collection; import java.util.List; /** @@ -24,7 +25,7 @@ public class SSFScheduling { this.currentPosition = currentPosition; } - public List execute(List requests) { + public List execute(Collection requests) { List result = new ArrayList<>(requests); List orderedRequests = new ArrayList<>(); diff --git a/src/main/java/com/thealgorithms/sorts/BucketSort.java b/src/main/java/com/thealgorithms/sorts/BucketSort.java index a6901ac33..62c5e9295 100644 --- a/src/main/java/com/thealgorithms/sorts/BucketSort.java +++ b/src/main/java/com/thealgorithms/sorts/BucketSort.java @@ -79,7 +79,7 @@ public class BucketSort implements SortAlgorithm { * @param the type of elements in the array * @return the sorted array */ - private > T[] concatenateBuckets(List> buckets, T[] array) { + private > T[] concatenateBuckets(Iterable> buckets, T[] array) { int index = 0; for (List bucket : buckets) { Collections.sort(bucket); diff --git a/src/main/java/com/thealgorithms/sorts/PatienceSort.java b/src/main/java/com/thealgorithms/sorts/PatienceSort.java index 52ed30d58..0edce8d9a 100644 --- a/src/main/java/com/thealgorithms/sorts/PatienceSort.java +++ b/src/main/java/com/thealgorithms/sorts/PatienceSort.java @@ -72,7 +72,7 @@ public class PatienceSort implements SortAlgorithm { * @param the type of elements in the piles, must be comparable * @return a priority queue containing the top element of each pile */ - private static > PriorityQueue> mergePiles(final List> piles) { + private static > PriorityQueue> mergePiles(final Iterable> piles) { PriorityQueue> pq = new PriorityQueue<>(); for (List pile : piles) { pq.add(new PileNode<>(pile.removeLast(), pile)); diff --git a/src/main/java/com/thealgorithms/sorts/PigeonholeSort.java b/src/main/java/com/thealgorithms/sorts/PigeonholeSort.java index 78d7d81d7..19f4291d8 100644 --- a/src/main/java/com/thealgorithms/sorts/PigeonholeSort.java +++ b/src/main/java/com/thealgorithms/sorts/PigeonholeSort.java @@ -78,7 +78,7 @@ public final class PigeonholeSort { * @param array the array to be sorted * @param pigeonHoles the populated pigeonholes */ - private static void collectFromPigeonHoles(int[] array, List> pigeonHoles) { + private static void collectFromPigeonHoles(int[] array, Iterable> pigeonHoles) { int index = 0; for (final var pigeonHole : pigeonHoles) { for (final int element : pigeonHole) { diff --git a/src/main/java/com/thealgorithms/sorts/TreeSort.java b/src/main/java/com/thealgorithms/sorts/TreeSort.java index e060af542..6f4e55094 100644 --- a/src/main/java/com/thealgorithms/sorts/TreeSort.java +++ b/src/main/java/com/thealgorithms/sorts/TreeSort.java @@ -51,7 +51,7 @@ public class TreeSort implements SortAlgorithm { return unsortedArray; } - private > List doTreeSortList(List unsortedList) { + private > List doTreeSortList(Iterable unsortedList) { // create a generic BST tree BSTRecursiveGeneric tree = new BSTRecursiveGeneric(); diff --git a/src/main/java/com/thealgorithms/strings/WordLadder.java b/src/main/java/com/thealgorithms/strings/WordLadder.java index 084a682b0..665e5ff32 100644 --- a/src/main/java/com/thealgorithms/strings/WordLadder.java +++ b/src/main/java/com/thealgorithms/strings/WordLadder.java @@ -1,8 +1,8 @@ package com.thealgorithms.strings; +import java.util.Collection; import java.util.HashSet; import java.util.LinkedList; -import java.util.List; import java.util.Queue; import java.util.Set; @@ -22,7 +22,7 @@ public final class WordLadder { * @param wordList a list of words that can be used in the transformation sequence * @return the number of words in the shortest transformation sequence, or 0 if no such sequence exists */ - public static int ladderLength(String beginWord, String endWord, List wordList) { + public static int ladderLength(String beginWord, String endWord, Collection wordList) { Set wordSet = new HashSet<>(wordList); if (!wordSet.contains(endWord)) { diff --git a/src/test/java/com/thealgorithms/datastructures/graphs/BoruvkaAlgorithmTest.java b/src/test/java/com/thealgorithms/datastructures/graphs/BoruvkaAlgorithmTest.java index 8cd0b0a68..f08916990 100644 --- a/src/test/java/com/thealgorithms/datastructures/graphs/BoruvkaAlgorithmTest.java +++ b/src/test/java/com/thealgorithms/datastructures/graphs/BoruvkaAlgorithmTest.java @@ -183,7 +183,7 @@ public class BoruvkaAlgorithmTest { * @param result list of edges in the Minimum Spanning Tree * @return the total weight of the Minimum Spanning Tree */ - int computeTotalWeight(final List result) { + int computeTotalWeight(final Iterable result) { int totalWeight = 0; for (final var edge : result) { totalWeight += edge.weight; diff --git a/src/test/java/com/thealgorithms/datastructures/graphs/EdmondsBlossomAlgorithmTest.java b/src/test/java/com/thealgorithms/datastructures/graphs/EdmondsBlossomAlgorithmTest.java index 4a7232447..aa8e6beeb 100644 --- a/src/test/java/com/thealgorithms/datastructures/graphs/EdmondsBlossomAlgorithmTest.java +++ b/src/test/java/com/thealgorithms/datastructures/graphs/EdmondsBlossomAlgorithmTest.java @@ -5,6 +5,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.List; import org.junit.jupiter.api.Test; @@ -25,7 +26,7 @@ public class EdmondsBlossomAlgorithmTest { * @param matching List of matched pairs returned by the algorithm. * @return A sorted 2D array of matching pairs. */ - private int[][] convertMatchingToArray(List matching) { + private int[][] convertMatchingToArray(Collection matching) { // Convert the list of pairs into an array int[][] result = matching.toArray(new int[0][]); diff --git a/src/test/java/com/thealgorithms/misc/WordBoggleTest.java b/src/test/java/com/thealgorithms/misc/WordBoggleTest.java index 2c79ec796..1d4ed7c5e 100644 --- a/src/test/java/com/thealgorithms/misc/WordBoggleTest.java +++ b/src/test/java/com/thealgorithms/misc/WordBoggleTest.java @@ -4,6 +4,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.stream.Stream; import org.junit.jupiter.api.BeforeEach; @@ -44,7 +45,7 @@ class WordBoggleTest { @ParameterizedTest @MethodSource("provideSpecialCases") - void testBoggleBoardSpecialCases(char[][] specialBoard, String[] words, List expectedWords, String testDescription) { + void testBoggleBoardSpecialCases(char[][] specialBoard, String[] words, Collection expectedWords, String testDescription) { List result = WordBoggle.boggleBoard(specialBoard, words); assertEquals(expectedWords.size(), result.size(), "Test failed for: " + testDescription); assertTrue(expectedWords.containsAll(result), "Test failed for: " + testDescription); diff --git a/src/test/java/com/thealgorithms/scheduling/PreemptivePrioritySchedulingTest.java b/src/test/java/com/thealgorithms/scheduling/PreemptivePrioritySchedulingTest.java index d0005dda9..ea692686a 100644 --- a/src/test/java/com/thealgorithms/scheduling/PreemptivePrioritySchedulingTest.java +++ b/src/test/java/com/thealgorithms/scheduling/PreemptivePrioritySchedulingTest.java @@ -3,6 +3,7 @@ package com.thealgorithms.scheduling; import static org.junit.jupiter.api.Assertions.assertEquals; import com.thealgorithms.devutils.entities.ProcessDetails; +import java.util.Collection; import java.util.List; import java.util.stream.Stream; import org.junit.jupiter.params.ParameterizedTest; @@ -17,7 +18,7 @@ import org.junit.jupiter.params.provider.MethodSource; class PreemptivePrioritySchedulingTest { @ParameterizedTest @MethodSource("provideProcessesAndExpectedSchedules") - void testPreemptivePriorityScheduling(List processes, List expectedSchedule) { + void testPreemptivePriorityScheduling(Collection processes, List expectedSchedule) { PreemptivePriorityScheduling scheduler = new PreemptivePriorityScheduling(processes); scheduler.scheduleProcesses(); assertEquals(expectedSchedule, scheduler.ganttChart); diff --git a/src/test/java/com/thealgorithms/searches/QuickSelectTest.java b/src/test/java/com/thealgorithms/searches/QuickSelectTest.java index dd04c85b7..cf160b0ff 100644 --- a/src/test/java/com/thealgorithms/searches/QuickSelectTest.java +++ b/src/test/java/com/thealgorithms/searches/QuickSelectTest.java @@ -4,6 +4,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -225,7 +226,7 @@ class QuickSelectTest { return RANDOM.ints(n, ASCII_A, ASCII_Z).mapToObj(i -> (char) i).collect(Collectors.toList()); } - private static > List getSortedCopyOfList(List list) { + private static > List getSortedCopyOfList(Collection list) { return list.stream().sorted().collect(Collectors.toList()); } }