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:
Giới thiệu luồng vào ra (I/O) trong Java
Most commonly used String methods in Java
Rest Web service: Filter và Interceptor với Jersey 2.x (P1)
Java Program to Check whether Graph is a Bipartite using DFS
Spring Data JPA @Modifying Annotation
Testing an OAuth Secured API with Spring MVC
Fixing 401s with CORS Preflights and Spring Security
Java Program to Implement PriorityQueue API
Java NIO2 Path API
Anonymous Classes in Java
Spring Boot - Logging
Comparing Long Values in Java
Java Program to Implement Min Heap
Getting the Size of an Iterable in Java
Convert a Map to an Array, List or Set in Java
Using the Not Operator in If Conditions in Java
REST Web service: Basic Authentication trong Jersey 2.x
Java Program to Sort an Array of 10 Elements Using Heap Sort Algorithm
Spring Boot - Unit Test Cases
A Guide to System.exit()
Entity To DTO Conversion for a Spring REST API
Converting String to Stream of chars
Guide to CopyOnWriteArrayList
A Custom Data Binder in Spring MVC
Guide to Java OutputStream
Adding Shutdown Hooks for JVM Applications
What is Thread-Safety and How to Achieve it?
Feign – Tạo ứng dụng Java RESTful Client
Java Program to Implement Dijkstra’s Algorithm using Set
Simple Single Sign-On with Spring Security OAuth2
Converting Between an Array and a Set in Java
New Features in Java 8