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:
Concurrent Test Execution in Spring 5
A Quick JUnit vs TestNG Comparison
Lớp Collections trong Java (Collections Utility Class)
Spring REST API + OAuth2 + Angular (using the Spring Security OAuth legacy stack)
Java Program to Implement LinkedTransferQueue API
Spring Data JPA @Query
Spring REST API with Protocol Buffers
Spring Data – CrudRepository save() Method
Spring Boot: Customize the Jackson ObjectMapper
Java Program to implement Bit Matrix
Most commonly used String methods in Java
Java Program to Find the Number of Ways to Write a Number as the Sum of Numbers Smaller than Itself
Java Program to Implement the linear congruential generator for Pseudo Random Number Generation
Optional trong Java 8
Java Program to Implement Stack API
Custom Cascading in Spring Data MongoDB
Exploring the Spring Boot TestRestTemplate
Guide To CompletableFuture
Java Program to implement Sparse Vector
Java Program to Implement the Binary Counting Method to Generate Subsets of a Set
Redirect to Different Pages after Login with Spring Security
Guide to CountDownLatch in Java
Java Program to Implement Kosaraju Algorithm
Java Program to Implement RenderingHints API
Java Program to Implement Queue
Java Program to Describe the Representation of Graph using Incidence Matrix
Hướng dẫn Java Design Pattern – Prototype
@DynamicUpdate with Spring Data JPA
Java Program to Find the Nearest Neighbor Using K-D Tree Search
Spring Boot - Rest Controller Unit Test
Java Program to Solve Knapsack Problem Using Dynamic Programming
Tạo chương trình Java đầu tiên sử dụng Eclipse