Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Implementering av Browserhistory | Avancerade Datastrukturer i Java
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Java Datastrukturer

bookUtmaning: Implementering av Browserhistory

Uppgift

I föregående kapitel implementerade du ett system med två knappar, framåt och bakåt, med hjälp av den föråldrade datastrukturen Stack, som inte rekommenderas för användning i modern Java-utveckling.

I detta kapitel är din uppgift att återkalla logiken du använde för att implementera klassen BrowserHistory och implementera den med hjälp av datastrukturen Deque.

Försök att inte titta på föregående kapitel och slutför denna uppgift på egen hand—så att säga, "koda om koden". Detta är också utmärkt träning med GitHub, vilket kommer att vara fördelaktigt för dig.

Ett interface med alla metoder har skapats i koden som finns på GitHub via länken nedan. Din uppgift är att skapa en klassimplementation och implementera detta interface genom att överskrida alla dess metoder.

När du är klar, kör testerna som jag har skrivit åt dig; det kommer automatiskt att kontrollera din lösning.

Du kan även utföra mellanliggande tester i main-klassen. Sammantaget litar jag på din ärlighet och självständighet. En riktig programmerare ska kunna förstå kod självständigt!

  • Börja med att skapa tre attribut i denna klass: backStack, forwardStack och currentUrl.
  • Använd därefter en autogenerator för att skapa konstruktorn för denna klass.
  • Använd nyckelordet implements och överskriv alla metoder i interfacet BrowserHistory.
  • Använd i metoderna de Deque- eller Stack-metoder du har lärt dig tidigare. Kom ihåg att Deque är en modern och överlägsen ersättning för datastrukturen Stack.
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);
            currentUrl = forwardStack.pop();
        } else {
            System.out.println("Cannot go forward. Already at the latest page.");
        }
    }

    @Override
    public String getCurrentPage() {
        return currentUrl;
    }
}
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 5

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

bookUtmaning: Implementering av Browserhistory

Svep för att visa menyn

Uppgift

I föregående kapitel implementerade du ett system med två knappar, framåt och bakåt, med hjälp av den föråldrade datastrukturen Stack, som inte rekommenderas för användning i modern Java-utveckling.

I detta kapitel är din uppgift att återkalla logiken du använde för att implementera klassen BrowserHistory och implementera den med hjälp av datastrukturen Deque.

Försök att inte titta på föregående kapitel och slutför denna uppgift på egen hand—så att säga, "koda om koden". Detta är också utmärkt träning med GitHub, vilket kommer att vara fördelaktigt för dig.

Ett interface med alla metoder har skapats i koden som finns på GitHub via länken nedan. Din uppgift är att skapa en klassimplementation och implementera detta interface genom att överskrida alla dess metoder.

När du är klar, kör testerna som jag har skrivit åt dig; det kommer automatiskt att kontrollera din lösning.

Du kan även utföra mellanliggande tester i main-klassen. Sammantaget litar jag på din ärlighet och självständighet. En riktig programmerare ska kunna förstå kod självständigt!

  • Börja med att skapa tre attribut i denna klass: backStack, forwardStack och currentUrl.
  • Använd därefter en autogenerator för att skapa konstruktorn för denna klass.
  • Använd nyckelordet implements och överskriv alla metoder i interfacet BrowserHistory.
  • Använd i metoderna de Deque- eller Stack-metoder du har lärt dig tidigare. Kom ihåg att Deque är en modern och överlägsen ersättning för datastrukturen Stack.
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);
            currentUrl = forwardStack.pop();
        } else {
            System.out.println("Cannot go forward. Already at the latest page.");
        }
    }

    @Override
    public String getCurrentPage() {
        return currentUrl;
    }
}
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 5
some-alt