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:
Java Program to Implement Self Balancing Binary Search Tree
How to Manually Authenticate User with Spring Security
Introduction to Eclipse Collections
Java Program to Implement Slicker Algorithm that avoids Triangulation to Find Area of a Polygon
Create Java Applet to Simulate Any Sorting Technique
Setting the Java Version in Maven
Hướng dẫn Java Design Pattern – Mediator
Java – Generate Random String
Xây dựng ứng dụng Client-Server với Socket trong Java
Giới thiệu Google Guice – Aspect Oriented Programming (AOP)
Finding the Differences Between Two Lists in Java
Testing an OAuth Secured API with Spring MVC
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
A Quick Guide to Spring Cloud Consul
A Guide to Java HashMap
Deploy a Spring Boot WAR into a Tomcat Server
Java Program to Implement EnumMap API
Java – Combine Multiple Collections
Check if a String is a Palindrome in Java
Java Program to Implement Disjoint Set Data Structure
Java Program to Implement LinkedTransferQueue API
Introduction to Spring Data JDBC
Java Program to Compute the Volume of a Tetrahedron Using Determinants
Hướng dẫn sử dụng String Format trong Java
Generate Spring Boot REST Client with Swagger
Java Program to Implement RenderingHints API
Simultaneous Spring WebClient Calls
Java 8 and Infinite Streams
Custom HTTP Header with the HttpClient
Java Program to Implement Binary Search Tree
Java Program to Implement Sieve Of Eratosthenes
CyclicBarrier in Java