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:
Primitive Type Streams in Java 8
@Order in Spring
Java Program to Implement Self organizing List
Overview of Spring Boot Dev Tools
Sort a HashMap in Java
REST Web service: Tạo ứng dụng Java RESTful Client với Jersey Client 2.x
Flattening Nested Collections in Java
Prevent Cross-Site Scripting (XSS) in a Spring Application
How to Define a Spring Boot Filter?
Java Program to Solve Travelling Salesman Problem for Unweighted Graph
Tiêu chuẩn coding trong Java (Coding Standards)
Guide to java.util.concurrent.BlockingQueue
Java Program to Implement Naor-Reingold Pseudo Random Function
Spring’s RequestBody and ResponseBody Annotations
SOAP Web service: Upload và Download file sử dụng MTOM trong JAX-WS
Custom Thread Pools In Java 8 Parallel Streams
Get the workstation name or IP
Java Program to Implement Euler Circuit Problem
Rate Limiting in Spring Cloud Netflix Zuul
Spring Cloud – Securing Services
Java Program to Implement Bloom Filter
Spring Boot - Hystrix
Remove HTML tags from a file to extract only the TEXT
A Guide to JPA with Spring
Mảng (Array) trong Java
Comparing Arrays in Java
Vấn đề Nhà sản xuất (Producer) – Người tiêu dùng (Consumer) và đồng bộ hóa các luồng trong Java
Control Structures in Java
Java Program to Implement LinkedBlockingDeque API
Spring Boot Configuration with Jasypt
Java Program to Find Number of Articulation points in a Graph
Java Program to Find Minimum Number of Edges to Cut to make the Graph Disconnected