From 1b98baead2031aef9f33d35cd9ff8bfbe41eca4a Mon Sep 17 00:00:00 2001 From: SpaceDigi Date: Fri, 5 Oct 2018 23:57:59 +0300 Subject: [PATCH] Java Linear Search with better speed Using BufferedReader is faster the Scanner --- java-linear-search/JavaLinearSearch1.java | 69 +++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 java-linear-search/JavaLinearSearch1.java diff --git a/java-linear-search/JavaLinearSearch1.java b/java-linear-search/JavaLinearSearch1.java new file mode 100644 index 0000000..424a8c0 --- /dev/null +++ b/java-linear-search/JavaLinearSearch1.java @@ -0,0 +1,69 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.LinkedList; + +/** + * Created by SpaceDigi + * Implementing Linear Search on java with better performance and testing + **/ + +/** + * This class demosntrate working linear search in collection + * Using buffered reader for more quick parsing text and LinkedList for using iterators + */ +public final class JavaLinearSearch1 { + + private static final String STOP_SIGNAL = "STOP"; + + public static void main(String[] args) { + BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in)); + //change to false for automatic testing + boolean manualTest = true; + //boolean manualTest = false; + try { + if(manualTest) { + String line = bfr.readLine(); + LinkedList list = new LinkedList<>(); + while (!stop(line)) { + addNumber(line, list); + line = bfr.readLine(); + } + long randomFinder = (long) (Math.random() * Long.MAX_VALUE); + System.out.println("Number for found: " + randomFinder + " was found: " + linearSearch(list, randomFinder)); + }else{ + LinkedList list = new LinkedList<>(); + int numOfTest =5000; + for(int k =0;k list, long randomFinder) { + for(long value: list) + if(value==randomFinder) + return randomFinder; + return -1; + } + + private static void addNumber(String line, LinkedList list) { + try { + long value = Long.parseLong(line.trim()); + list.add(value); + } catch (NumberFormatException e) { + //User value isn't correct + } + } + + private static boolean stop(String line) { + return line == null ||line.equals("")|| line.contains(STOP_SIGNAL); + } +}