Challenge: Implementing BrowserHistory
Task
In the previous chapter, you implemented a system with two buttons, forward and backward, using the obsolete Stack
data structure, which is not recommended for use in modern Java development.
In this chapter, your task is to recall the logic you used to implement the BrowserHistory
class and implement it using the Deque
data structure.
Try not to peek at the previous chapter and complete this task on your own—so to speak, "recode the code." This is also excellent practice with GitHub, which will be beneficial for you.
An interface with all the methods has been created in the code available on GitHub via the link below. Your task is to create a class implementation and implement this interface by overriding all its methods.
Once you finish, run the tests that I have written for you; it will automatically check your solution.
You can also perform intermediate tests in the main
class. Overall, I rely on your honesty and independence. A true programmer should be able to understand code independently!
Start by creating three attributes in this class:
backStack
,forwardStack
, andcurrentUrl
.Next, use an auto-generator to create the constructor for this class.
Use the implements keyword and override all methods of the
BrowserHistory
interface.In the methods, utilize the
Deque
orStack
methods you've learned earlier. Remember thatDeque
is a modern and superior replacement for theStack
data structure.
java99123456789101112131415161718192021222324252627282930313233343536package codefinity.Task;import java.util.Deque;public class BrowserHistoryImpl implements BrowserHistory {private Deque<String> backStack;private Deque<String> forwardStack;private String currentUrl;public BrowserHistoryImpl(Deque<String> backStack, Deque<String> forwardStack, String currentUrl) {this.backStack = backStack;this.forwardStack = forwardStack;this.currentUrl = currentUrl;}@Overridepublic void visitPage(String url) {backStack.push(currentUrl);forwardStack.clear();currentUrl = url;}@Overridepublic void goBack() {if (!backStack.isEmpty()) {forwardStack.push(currentUrl);currentUrl = backStack.pop();} else {System.out.println("Cannot go back. Already at the beginning.");}}@Overridepublic void goForward() {if (!forwardStack.isEmpty()) {backStack.push(currentUrl);
Grazie per i tuoi commenti!
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione