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:
DistinctBy in the Java Stream API
Quick Guide on Loading Initial Data with Spring Boot
Intro to the Jackson ObjectMapper
Spring Boot - Sending Email
Introduction to Apache Commons Text
Collect a Java Stream to an Immutable Collection
Java Program to Generate Random Numbers Using Probability Distribution Function
ThreadPoolTaskExecutor corePoolSize vs. maxPoolSize
Java Program to Implement Triply Linked List
Quản lý bộ nhớ trong Java với Heap Space vs Stack
Java Program to Check whether Graph is a Bipartite using 2 Color Algorithm
Java Program to Check whether Graph is Biconnected
Java Convenience Factory Methods for Collections
Java Program to Implement Segment Tree
Java Program to Find Hamiltonian Cycle in an UnWeighted Graph
Functional Interface trong Java 8
Apache Camel with Spring Boot
Spring Boot - Cloud Configuration Server
Java Program to Implement Hamiltonian Cycle Algorithm
Write/Read cookies using HTTP and Read a file from the internet
Mệnh đề Switch-case trong java
The XOR Operator in Java
Hướng dẫn sử dụng luồng vào ra ký tự trong Java
Java Program to Implement Word Wrap Problem
Guide to Java 8’s Collectors
Check If a File or Directory Exists in Java
Spring Boot - Tomcat Port Number
Java Program to Generate Random Numbers Using Multiply with Carry Method
Guide to Escaping Characters in Java RegExps
How to Get All Spring-Managed Beans?
Convert Time to Milliseconds in Java
JavaScript Searching: getElement*, querySelector*