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 Find Location of a Point Placed in Three Dimensions Using K-D Trees
Guide to Java 8’s Collectors
Mix plain text and HTML content in a mail
How to Return 404 with Spring WebFlux
Java Program to Find Whether a Path Exists Between 2 Given Nodes
The Registration API becomes RESTful
How to Find an Element in a List with Java
Extra Login Fields with Spring Security
Spring Security Authentication Provider
Jackson Annotation Examples
Apache Camel with Spring Boot
Java Program to Compute Cross Product of Two Vectors
Hướng dẫn Java Design Pattern – Observer
Hướng dẫn sử dụng String Format trong Java
Java Program to Perform Deletion in a BST
A Guide to Java 9 Modularity
Java Program to Implement ArrayList API
Generic Constructors in Java
Java Program to Represent Graph Using 2D Arrays
JavaScript Searching: getElement*, querySelector*
Java Program to Implement Attribute API
Reading an HTTP Response Body as a String in Java
String Operations with Java Streams
Java Program to Perform Left Rotation on a Binary Search Tree
Using JWT with Spring Security OAuth (legacy stack)
Comparing Two HashMaps in Java
Optional trong Java 8
Java Program to Implement Ternary Search Tree
Java Program to Find kth Smallest Element by the Method of Partitioning the Array
Java Program to Implement Solovay Strassen Primality Test Algorithm
Hướng dẫn sử dụng Java Generics
Guide To CompletableFuture