Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Challenge: Implementing BrowserHistory | Advanced Data Structures in Java
Java Data Structures

book
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, and currentUrl.

  • 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 or Stack methods you've learned earlier. Remember that Deque is a modern and superior replacement for the Stack data structure.

java
package 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;
}

@Override
public void visitPage(String url) {
backStack.push(currentUrl);
forwardStack.clear();
currentUrl = url;
}

@Override
public void goBack() {
if (!backStack.isEmpty()) {
forwardStack.push(currentUrl);
currentUrl = backStack.pop();
} else {
System.out.println("Cannot go back. Already at the beginning.");
}
}

@Override
public void goForward() {
if (!forwardStack.isEmpty()) {
backStack.push(currentUrl);
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 5

Chieda ad AI

expand
ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

We use cookies to make your experience better!
some-alt