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:
Spring Boot - Scheduling
Java String to InputStream
Java Program to Implement Best-First Search
A Guide to the Java LinkedList
Java Program to Check Cycle in a Graph using Graph traversal
Tiêu chuẩn coding trong Java (Coding Standards)
Java Program to Implement TreeSet API
Mix plain text and HTML content in a mail
Java Program to Implement Ternary Tree
Java – InputStream to Reader
Transaction Propagation and Isolation in Spring @Transactional
Hướng dẫn Java Design Pattern – Interpreter
Java Program to implement Bi Directional Map
Java Program to Implement Counting Sort
Removing all duplicates from a List in Java
Posting with HttpClient
Java Program to Implement Strassen Algorithm
Java Program to Implement Euclid GCD Algorithm
Giới thiệu java.io.tmpdir
The StackOverflowError in Java
Guide to Guava Table
Lớp LinkedHashMap trong Java
Java Program to Find the Shortest Path Between Two Vertices Using Dijkstra’s Algorithm
Java Program to Find the Shortest Path from Source Vertex to All Other Vertices in Linear Time
StringBuilder vs StringBuffer in Java
Spring 5 WebClient
Introduction to Spring Boot CLI
Java Program to Implement CountMinSketch
Java Program to Implement Expression Tree
JUnit 5 for Kotlin Developers
Phân biệt JVM, JRE, JDK
Java Program to Find Path Between Two Nodes in a Graph