Untitled
unknown
plain_text
a year ago
2.1 kB
5
Indexable
import java.util.Stack;
class Library {
private final DynamicArray<Book> books;
private Stack<Book> currentBookStack = new Stack<>();
private Stack<Integer> currentIndexStack = new Stack<>();
public Library() {
books = new DynamicArray<>();
}
public void addBook(Book book) {
books.add(book);
currentBookStack.push(book);
currentIndexStack.push(books.size() - 1);
}
public Book removeBook(int index) {
Book removedBook = books.remove(index);
if (removedBook != null) {
currentBookStack.push(removedBook);
currentIndexStack.push(index);
}
return removedBook;
}
public void undo() {
if (!currentBookStack.isEmpty() && !currentIndexStack.isEmpty()) {
Book lastBook = currentBookStack.pop();
int lastIndex = currentIndexStack.pop();
books.add(lastIndex, lastBook);
}
}
public Book getBook(int index) {
return books.get(index);
}
public int getTotalBooks() {
return books.size();
}
public String sortByName() {
List<Book> nonNullBooks = new ArrayList<>();
for (int i = 0; i < books.size(); i++) {
Book book = books.get(i);
if (book != null) {
nonNullBooks.add(book);
}
}
int n = nonNullBooks.size();
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (nonNullBooks.get(j).toString().compareToIgnoreCase(nonNullBooks.get(j + 1).toString()) > 0) {
Book temp = nonNullBooks.get(j);
nonNullBooks.set(j, nonNullBooks.get(j + 1));
nonNullBooks.set(j + 1, temp);
}
}
}
StringBuilder sb = new StringBuilder();
for (Book book : nonNullBooks) {
sb.append(book).append("\n");
}
return sb.toString();
}
}
Editor is loading...
Leave a Comment