Я пытаюсь написать геттер для HashSet, где объект содержит несколько атрибутов строк и целых чисел.Getter должен возвращать join String только двух полей String, разделенных запятой, для каждого объекта, который хранится в HashSet.
Я мог бы написать его, используя циклы, и это не сложно, но я бы хотелнайти более короткое, более элегантное и умное решение.Я пытался с String.join (), но он не принимает HashSet объектов.Использование Object.toString () не вариант, потому что toString () должен возвращать больше атрибутов Object, тогда как этот метод получения должен возвращать только два из них.
Давайте представим упрощенную библиотеку с объектом Book и объектом Borrower, где каждая книга, заимствованная заемщиком, хранится в HashSet в объекте Borrower.
import java.util.HashSet;
public class Main{
public static void main(String []args){
Borrower john = new Borrower("John");
Book book1 = new Book("Title1", "Author1", "Isbn1", 100);
Book book2 = new Book("Title2", "Author2", "Isbn2", 200);
Book book3 = new Book("Title3", "Author3", "Isbn3", 300);
john.borrowBook(book1);
john.borrowBook(book2);
john.borrowBook(book3);
System.out.println(john.getBorrowed());
// It should print
// Title1, Author1
// Title2, Author2
// Title3, Author3
}
}
class Book {
String title;
String author;
String isbn;
int pageNum;
Book(String t, String a, String i, int p){
this.title = t;
this.author = a;
this.isbn = i;
this.pageNum = p;
}
public String getAuthor() { return author; }
public String getTitle() { return title; }
}
class Borrower {
String name;
HashSet <Book> onLoan = new HashSet<Book>();
Borrower(String n){
this.name = n;
}
public boolean borrowBook(Book b) {
return onLoan.add(b);
}
public String getBorrowed(){
if(onLoan.isEmpty())
return "No books borrowed";
else{
// It should return joined string of only title and author for every book in HashSet,
//title and author separated with coma, each object in new line, like "title, author \n"
return "---";
}
}
}
getBorrowed () Borrower должен возвращать объединенную строку тольконазвание и автор для каждой книги в HashSet.