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:
Java Program to Implement K Way Merge Algorithm
Comparing Two HashMaps in Java
Java Program to Check whether Undirected Graph is Connected using DFS
Java Program to Implement Affine Cipher
Understanding Memory Leaks in Java
Java 8 Predicate Chain
How to Iterate Over a Stream With Indices
Java Program to Implement Hash Tables Chaining with Doubly Linked Lists
Introduction to Java 8 Streams
Java Program to Implement Trie
How to Replace Many if Statements in Java
New Features in Java 14
Hướng dẫn sử dụng lớp Console trong java
Immutable Objects in Java
How to Get a Name of a Method Being Executed?
Java Program to Implement Sieve Of Sundaram
Java – String to Reader
Hướng dẫn Java Design Pattern – Memento
Spring Boot Actuator
Introduction to Java Serialization
Hướng dẫn Java Design Pattern – Prototype
How to Return 404 with Spring WebFlux
Java Program to Perform Inorder Non-Recursive Traversal of a Given Binary Tree
Rest Web service: Filter và Interceptor với Jersey 2.x (P1)
Java Program to Implement Heap’s Algorithm for Permutation of N Numbers
JavaScript Searching: getElement*, querySelector*
Java Perform to a 2D FFT Inplace Given a Complex 2D Array
Comparing Arrays in Java
Java Program for Douglas-Peucker Algorithm Implementation
Spring Data MongoDB Transactions
Java Program to Implement Rolling Hash
Request a Delivery / Read Receipt in Javamail