Prosty Arraylist, wyświetlenie obiektów

0
	static void showBooks(){
		
		ArrayList <Books> arr = new ArrayList<>();
		arr.add(new Books(1, "Podstawy Java", true, null, null, 2.0));
		arr.add(new Books(2, "Java Tutorial", true, null, null, 0.0));
		arr.add(new Books(3, "SQL tutorial", true, null, null, 5.0));
		
		}

Tworzę moje pierwsze dzieła w javie. Mam klasę, w niej konstruktor, gettery settery.

Mam dwa problemy:

  1. Chciałbym wydrukować całą ArrayListę - System.out.println nie działa
  2. W konstruktorze mam: public Books(int id, String title, boolean isRented, Date dayOfRent, Date dayOfReturn, double penalty) - w jakim formacie wpisać datę?
0

Data: https://docs.oracle.com/javase/7/docs/api/java/util/Date.html

Wydrukować cała listę a w jaki sposób ją drukujesz że Ci nie działa?

prosty przykład dla wyświetlenie listy tytułów:

ArrayList<Book> arr = new ArrayList<>();
        arr.add(new Book(1, "Podstawy Java"));
        arr.add(new Book(2, "Java Tutorial"));
        arr.add(new Book(3, "SQL tutorial"));

        arr.stream().map(o -> o.getTitle()).forEach(System.out::println);
0

Dzięki za odpowiedź.

Drukowałem w taki sposób:
System.out.println(arr); :D Co mi dawało w wyniku: [TheLibrary.Books@7d4991ad, TheLibrary.Books@28d93b30, TheLibrary.Books@1b6d3586]

Twój sposób mi działa i pokazuje tytuły, ale chciałbym wszystkie informacje, a nie tylko tytuł, jak to zmienić?
Btw da się to inaczej zrobić niż przez lambda?

0

bez lambdy będzie coś takiego:

for(Books book : arr) {
  System.out.println(book.getTitle());
}
0

Dzięki :) działa mi tak jak chciałem na dwa sposoby

0
Wielki Kura napisał(a):

Dzięki za odpowiedź.

Drukowałem w taki sposób:
System.out.println(arr); :D Co mi dawało w wyniku: [TheLibrary.Books@7d4991ad, TheLibrary.Books@28d93b30, TheLibrary.Books@1b6d3586]

Twój sposób mi działa i pokazuje tytuły, ale chciałbym wszystkie informacje, a nie tylko tytuł, jak to zmienić?
Btw da się to inaczej zrobić niż przez lambda?

Hej, odnośnie drukowania przy pomocy

System.out.println(arr)

to wykonywany jest tu automatycznie toString(), i dla listy działa on spoko, bo oplata ją nam w nawiasy kwadratowe:

 [TheLibrary.Books@7d4991ad, TheLibrary.Books@28d93b30, TheLibrary.Books@1b6d3586]

I wewnątrz listy znowu wykonywana jest metoda toString na wszystkich obiektach, która domyślnie zwraca Ci "TheLibrary.Books@7d4991ad" (powiedzmy referencję)

W takim przypadku wystarczy, że nadpiszesz w klasie Books metodę toString, czyli dodasz takie coś:

@Override
    public String toString() {
        return "Book{" + "id='" + this.id + ", title=" + this.title + "} ";
    }

i System.out.println(arr) będzie działać tak jak chcesz :)

No i klasy powinny być nazywane w liczbie pojedynczej a nie mnogiej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1