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:
Hướng dẫn sử dụng biểu thức chính quy (Regular Expression) trong Java
Spring Cloud Connectors and Heroku
Comparing Long Values in Java
Java Program to Check Cycle in a Graph using Topological Sort
Quick Intro to Spring Cloud Configuration
A Guide to Iterator in Java
Inheritance and Composition (Is-a vs Has-a relationship) in Java
Java Program to Test Using DFS Whether a Directed Graph is Strongly Connected or Not
Spring Boot Tutorial – Bootstrap a Simple Application
Giới thiệu Swagger – Công cụ document cho RESTfull APIs
Multi Dimensional ArrayList in Java
Control the Session with Spring Security
Pagination and Sorting using Spring Data JPA
Tránh lỗi NullPointerException trong Java như thế nào?
Kiểu dữ liệu Ngày Giờ (Date Time) trong java
Introduction to Thread Pools in Java
Spring Boot - File Handling
Java Program to Implement Uniform-Cost Search
Concurrent Test Execution in Spring 5
Java – Generate Random String
Java Program to Generate All Pairs of Subsets Whose Union Make the Set
File Upload with Spring MVC
Java Program to subtract two large numbers using Linked Lists
Java Program to Implement Double Ended Queue
Java Program to Perform Sorting Using B-Tree
Guide to the Fork/Join Framework in Java
Java Program to Implement Trie
Java Program to Solve a Matching Problem for a Given Specific Case
Spring Boot - Introduction
How to Replace Many if Statements in Java
“Stream has already been operated upon or closed” Exception in Java
Composition, Aggregation, and Association in Java