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:
Làm thế nào tạo instance của một class mà không gọi từ khóa new?
A Custom Data Binder in Spring MVC
Hướng dẫn Java Design Pattern – Chain of Responsibility
Spring AMQP in Reactive Applications
Hướng dẫn Java Design Pattern – Composite
Cơ chế Upcasting và Downcasting trong java
Error Handling for REST with Spring
A Guide to EnumMap
Java – Byte Array to Reader
Mapping Nested Values with Jackson
Java Program to Find the Longest Path in a DAG
Create Java Applet to Simulate Any Sorting Technique
Class Loaders in Java
Java Program to Implement Cubic convergence 1/pi Algorithm
Java Program to Implement Queue
Java Program to Remove the Edges in a Given Cyclic Graph such that its Linear Extension can be Found
A Guide to TreeMap in Java
Java Program to Compare Binary and Sequential Search
DynamoDB in a Spring Boot Application Using Spring Data
How to Read a Large File Efficiently with Java
Java Scanner hasNext() vs. hasNextLine()
Java 14 Record Keyword
Java Program to Generate Random Hexadecimal Byte
Biến trong java
Java Program to Encode a Message Using Playfair Cipher
Java Program to Implement Hash Tree
Java Program to Implement Hash Tables with Double Hashing
Binary Numbers in Java
Spring WebClient Filters
ExecutorService – Waiting for Threads to Finish
Java Program to Construct an Expression Tree for an Prefix Expression
A Guide to LinkedHashMap in Java