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:
Call Methods at Runtime Using Java Reflection
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
Send email with JavaMail
Spring RestTemplate Request/Response Logging
Loại bỏ các phần tử trùng trong một ArrayList như thế nào?
Toán tử instanceof trong java
Introduction to Using Thymeleaf in Spring
ClassNotFoundException vs NoClassDefFoundError
Java Program to add two large numbers using Linked List
Java Program to Find Transpose of a Graph Matrix
Hướng dẫn sử dụng biểu thức chính quy (Regular Expression) trong Java
Array to String Conversions
Check if a String is a Palindrome in Java
A Quick Guide to Using Keycloak with Spring Boot
SOAP Web service: Authentication trong JAX-WS
Java Program to Find the Connected Components of an UnDirected Graph
Java Program to Compare Binary and Sequential Search
Using Spring @ResponseStatus to Set HTTP Status Code
Java Program to Implement Max Heap
Spring Boot: Customize the Jackson ObjectMapper
Introduction to Using FreeMarker in Spring MVC
Weak References in Java
Java Program to Implement Wagner and Fisher Algorithm for online String Matching
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java
Java Program to Perform Arithmetic Operations on Numbers of Size
New Features in Java 10
Java Program to Implement Attribute API
Deque và ArrayDeque trong Java
wait() and notify() Methods in Java
Giới thiệu Java Service Provider Interface (SPI) – Tạo các ứng dụng Java dễ mở rộng
Guide to BufferedReader
Java Program to Check the Connectivity of Graph Using BFS