This is a java program to perform searching based on locality of refernce. The Locality of Reference principle says that if an element of a list is accessed it might also be accessed in near future. So we store it to the front of the list.
Here is the source code of the Java Program to Perform Searching Based on Locality of Reference. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/* * Follows recently accessed elements should be referred more so kept on top of * the list */ package com.maixuanviet.combinatorial; import java.util.LinkedList; import java.util.List; import java.util.Random; import java.util.Scanner; public class LocalityBasedSearching { public static void main(String[] args) { List<Integer> items = new LinkedList<Integer>(); Integer n = 10; Scanner sc = new Scanner(System.in); Random rand = new Random(); while (n > 0) { items.add(rand.nextInt(100)); n--; } System.out.println(items.toString()); boolean flag = true; boolean found = false; Integer numberofInstance; while (flag == true) { numberofInstance = 0; System.out.println("Enter the element to find: "); Integer search = sc.nextInt(); for (int i = 0; i < items.size(); i++) { if (items.get(i).equals(search)) { found = true; System.out.println("Element found at index " + i + "\nReordering list..."); // Integer temp = items.get(numberofInstance); // items.set(numberofInstance, search); items.add(numberofInstance, search); items.remove(i + 1); // items.set(i, temp); System.out.println("Reordered list: " + items.toString()); numberofInstance++; // break; } } if (found == false) { System.out.println("No such element found."); } System.out.println("Do you want to continue? <true>/<false>"); flag = sc.nextBoolean(); } sc.close(); } }
Output:
$ javac LocalityBasedSearching.java $ java LocalityBasedSearching [52, 94, 58, 8, 78, 0, 30, 81, 16, 58] Enter the element to find: 8 Element found at index 3 Reordering list... Reordered list: [8, 52, 94, 58, 78, 0, 30, 81, 16, 58] Do you want to continue? <true>/<false> true Enter the element to find: 58 Element found at index 3 Reordering list... Reordered list: [58, 8, 52, 94, 78, 0, 30, 81, 16, 58] Element found at index 9 Reordering list... Reordered list: [58, 58, 8, 52, 94, 78, 0, 30, 81, 16] Do you want to continue? <true>/<false> true Enter the element to find: 94 Element found at index 4 Reordering list... Reordered list: [94, 58, 58, 8, 52, 78, 0, 30, 81, 16] Do you want to continue? <true>/<false> false
Related posts:
Period and Duration in Java
Adding a Newline Character to a String in Java
Hamcrest Collections Cookbook
CyclicBarrier in Java
Java – Write a Reader to File
Java Program to Perform Preorder Non-Recursive Traversal of a Given Binary Tree
Java Program to Find the Number of Ways to Write a Number as the Sum of Numbers Smaller than Itself
Java Program to do a Breadth First Search/Traversal on a graph non-recursively
Spring – Injecting Collections
Guide to DelayQueue
Guide to Java Instrumentation
Hướng dẫn Java Design Pattern – Singleton
Guide to Character Encoding
Injecting Prototype Beans into a Singleton Instance in Spring
Spring REST API + OAuth2 + Angular
Java Program to Perform Insertion in a 2 Dimension K-D Tree
Java Program to Perform Matrix Multiplication
Java 8 Stream API Analogies in Kotlin
HttpClient 4 – Send Custom Cookie
Convert char to String in Java
Setting a Request Timeout for a Spring REST API
Documenting a Spring REST API Using OpenAPI 3.0
Jackson – JsonMappingException (No serializer found for class)
JavaScript Sticky flag "y", searching at position
Java Program to Find Inverse of a Matrix
Spring Boot - Tomcat Port Number
Java Program to Implement Hopcroft Algorithm
Java Program to Implement Brent Cycle Algorithm
A Custom Data Binder in Spring MVC
Multipart Upload with HttpClient 4
ETL with Spring Cloud Data Flow
The Registration Process With Spring Security