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:
Merging Two Maps with Java 8
Retrieve User Information in Spring Security
Spring Security Custom AuthenticationFailureHandler
Tìm hiểu về xác thực và phân quyền trong ứng dụng
Java Program to Give an Implementation of the Traditional Chinese Postman Problem
Java Program to Implement Wagner and Fisher Algorithm for online String Matching
Java Program to Implement Double Order Traversal of a Binary Tree
Java Program to Perform Sorting Using B-Tree
Đồng bộ hóa các luồng trong Java
Spring WebClient Filters
Examine the internal DNS cache
Toán tử trong java
CyclicBarrier in Java
Login For a Spring Web App – Error Handling and Localization
Phương thức tham chiếu trong Java 8 – Method References
Sử dụng Fork/Join Framework với ForkJoinPool trong Java
Extract network card address
Comparing Arrays in Java
Java Program to Decode a Message Encoded Using Playfair Cipher
Spring Data JPA Delete and Relationships
Custom Error Pages with Spring MVC
A Guide to the ViewResolver in Spring MVC
Java NIO2 Path API
Java Program to Implement Range Tree
Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries
Java Program to Solve a Matching Problem for a Given Specific Case
Java Program to Perform Encoding of a Message Using Matrix Multiplication
Date Time trong Java 8
Một số ký tự đặc biệt trong Java
Java Program to Represent Graph Using Adjacency List
Jackson – Change Name of Field
Control the Session with Spring Security