From e4d301e81dfbfca03d385975eed121160302939c Mon Sep 17 00:00:00 2001 From: ericgoebelbecker <@592Gbetz> Date: Fri, 1 Dec 2017 15:08:19 -0500 Subject: [PATCH 1/2] BAEL-1374 - search an array --- .../com/baeldung/array/SearchArrayTest.java | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 core-java/src/test/java/com/baeldung/array/SearchArrayTest.java diff --git a/core-java/src/test/java/com/baeldung/array/SearchArrayTest.java b/core-java/src/test/java/com/baeldung/array/SearchArrayTest.java new file mode 100644 index 0000000000..204e8a7945 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/array/SearchArrayTest.java @@ -0,0 +1,116 @@ +package com.baeldung.array; + +import org.junit.Test; + +import java.util.*; + +public class SearchArrayTest { + + + @Test + public void searchArrayAllocNewCollections() { + + int count = 1000; + + String[] array = seedArray(count); + + long startTime = System.nanoTime(); + for (int i = 0; i < count; i++) { + searchList(array, "A"); + } + long duration = System.nanoTime() - startTime; + System.out.println("SearchList: " + duration / 10000); + + startTime = System.nanoTime(); + for (int i = 0; i < count; i++) { + searchSet(array,"A"); + } + duration = System.nanoTime() - startTime; + System.out.println("SearchSet: " + duration / 10000); + + startTime = System.nanoTime(); + for (int i = 0; i < count; i++) { + searchLoop(array, "A"); + } + duration = System.nanoTime() - startTime; + System.out.println("SearchLoop: " + duration / 10000); + } + + @Test + public void searchArrayReuseCollections() { + + int count = 10000; + String[] array = seedArray(count); + + List asList = Arrays.asList(array); + Set asSet = new HashSet<>(Arrays.asList(array)); + + long startTime = System.nanoTime(); + for (int i = 0; i < count; i++) { + asList.contains("A"); + } + long duration = System.nanoTime() - startTime; + System.out.println("List: " + duration / 10000); + + startTime = System.nanoTime(); + for (int i = 0; i < count; i++) { + asSet.contains("A"); + } + duration = System.nanoTime() - startTime; + System.out.println("Set: " + duration / 10000); + + startTime = System.nanoTime(); + for (int i = 0; i < count; i++) { + searchLoop(array, "A"); + } + duration = System.nanoTime() - startTime; + System.out.println("Loop: " + duration / 10000); + + } + + + @Test + public void searchArrayBinarySearch() { + + int count = 10000; + String[] array = seedArray(count); + Arrays.sort(array); + + long startTime = System.nanoTime(); + for (int i = 0; i < count; i++) { + Arrays.binarySearch(array, "A"); + } + long duration = System.nanoTime() - startTime; + System.out.println("Binary search: " + duration / 10000); + + } + + private boolean searchList(String[] arr, String targetValue) { + return Arrays.asList(arr).contains(targetValue); + } + + private boolean searchSet(String[] arr, String targetValue) { + Set set = new HashSet<>(Arrays.asList(arr)); + return set.contains(targetValue); + } + + private boolean searchLoop(String[] arr, String targetValue) { + for (String s : arr) { + if (s.equals(targetValue)) + return true; + } + return true; + } + + private String[] seedArray(int length) { + + String[] strings = new String[length]; + Random random = new Random(); + for (int i = 0; i < length; i++) + { + strings[i] = String.valueOf(random.nextInt()); + } + return strings; + } + +} From 89ab473651138ae2cf2f07881cd7e2550bd64232 Mon Sep 17 00:00:00 2001 From: ericgoebelbecker <@592Gbetz> Date: Fri, 1 Dec 2017 18:02:13 -0500 Subject: [PATCH 2/2] BAEL-1374 - search an array. Name changes. --- .../com/baeldung/array/SearchArrayTest.java | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/array/SearchArrayTest.java b/core-java/src/test/java/com/baeldung/array/SearchArrayTest.java index 204e8a7945..94911baac9 100644 --- a/core-java/src/test/java/com/baeldung/array/SearchArrayTest.java +++ b/core-java/src/test/java/com/baeldung/array/SearchArrayTest.java @@ -12,25 +12,25 @@ public class SearchArrayTest { int count = 1000; - String[] array = seedArray(count); + String[] strings = seedArray(count); long startTime = System.nanoTime(); for (int i = 0; i < count; i++) { - searchList(array, "A"); + searchList(strings, "W"); } long duration = System.nanoTime() - startTime; System.out.println("SearchList: " + duration / 10000); startTime = System.nanoTime(); for (int i = 0; i < count; i++) { - searchSet(array,"A"); + searchSet(strings,"S"); } duration = System.nanoTime() - startTime; System.out.println("SearchSet: " + duration / 10000); startTime = System.nanoTime(); for (int i = 0; i < count; i++) { - searchLoop(array, "A"); + searchLoop(strings, "T"); } duration = System.nanoTime() - startTime; System.out.println("SearchLoop: " + duration / 10000); @@ -40,28 +40,28 @@ public class SearchArrayTest { public void searchArrayReuseCollections() { int count = 10000; - String[] array = seedArray(count); + String[] strings = seedArray(count); - List asList = Arrays.asList(array); - Set asSet = new HashSet<>(Arrays.asList(array)); + List asList = Arrays.asList(strings); + Set asSet = new HashSet<>(Arrays.asList(strings)); long startTime = System.nanoTime(); for (int i = 0; i < count; i++) { - asList.contains("A"); + asList.contains("W"); } long duration = System.nanoTime() - startTime; System.out.println("List: " + duration / 10000); startTime = System.nanoTime(); for (int i = 0; i < count; i++) { - asSet.contains("A"); + asSet.contains("S"); } duration = System.nanoTime() - startTime; System.out.println("Set: " + duration / 10000); startTime = System.nanoTime(); for (int i = 0; i < count; i++) { - searchLoop(array, "A"); + searchLoop(strings, "T"); } duration = System.nanoTime() - startTime; System.out.println("Loop: " + duration / 10000); @@ -73,33 +73,33 @@ public class SearchArrayTest { public void searchArrayBinarySearch() { int count = 10000; - String[] array = seedArray(count); - Arrays.sort(array); + String[] strings = seedArray(count); + Arrays.sort(strings); long startTime = System.nanoTime(); for (int i = 0; i < count; i++) { - Arrays.binarySearch(array, "A"); + Arrays.binarySearch(strings, "A"); } long duration = System.nanoTime() - startTime; System.out.println("Binary search: " + duration / 10000); } - private boolean searchList(String[] arr, String targetValue) { - return Arrays.asList(arr).contains(targetValue); + private boolean searchList(String[] strings, String searchString) { + return Arrays.asList(strings).contains(searchString); } - private boolean searchSet(String[] arr, String targetValue) { - Set set = new HashSet<>(Arrays.asList(arr)); - return set.contains(targetValue); + private boolean searchSet(String[] strings, String searchString) { + Set set = new HashSet<>(Arrays.asList(strings)); + return set.contains(searchString); } - private boolean searchLoop(String[] arr, String targetValue) { - for (String s : arr) { - if (s.equals(targetValue)) + private boolean searchLoop(String[] strings, String searchString) { + for (String s : strings) { + if (s.equals(searchString)) return true; } - return true; + return false; } private String[] seedArray(int length) {