Skapa ett Set från en List med hjälp av en ström.
Hej jag sitter och klurar på en uppgift där jag ska skapa en mängd utifrån en lista med hjälp av en ström och mappning. Jag får inte riktigt rätt på det.
Tanken är att jag ska göra en mängd av författare från bok objekt. Bok klassen bifogar jag här under.
public class Book {
private String isbn;
private String title;
private String author;
private int nbrPages;
public Book(String isbn, String title, String author, int nbrPages) {
this.isbn = isbn;
this.title = title;
this.author = author;
this.nbrPages = nbrPages;
}
public String getTitle() {
return title;
}
public String getAuthor() {
return author;
}
public int nbrPages() {
return nbrPages;
}
public String getIsbn() {
return isbn;
}
}
Sen själva mängd skapandet:
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
public class BookExample {
public static void main(String[] args) {
List<Book> myBooks = new LinkedList<Book>();
myBooks.add(new Book("3333333333-3", "titleB", "authorC", 125));
myBooks.add(new Book("4444444444-4", "titleA", "authorC", 523));
myBooks.add(new Book("2222222222-2", "titleD", "authorA", 199));
myBooks.add(new Book("1111111111-1", "titleC", "authorB", 278));
Set<String> authors = myBooks.stream().map(b->b.getAuthor()).collect(Collectors.toSet());
}
}
Jag vet att felet ligger på sista raden. Det jag vill göra är ganska straight forward. Hämta författar-strängen från bok objektet och lägg in den i mängden, och detta ska göras i samma sats. Får dock inte rätt på det!
Tack!
Vad är det som inte fungerar? Jag tycker det ser ok ut. Skriv ut set'et authors och kontrollera
Du har bara missat en import. Detta fungerar fint åtminstone för mig.
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
class Main {
public static void main(String[] args) {
List<Book> myBooks = new LinkedList<Book>();
myBooks.add(new Book("3333333333-3", "titleB", "authorC", 125));
myBooks.add(new Book("4444444444-4", "titleA", "authorC", 523));
myBooks.add(new Book("2222222222-2", "titleD", "authorA", 199));
myBooks.add(new Book("1111111111-1", "titleC", "authorB", 278));
Set<String> authors = myBooks.stream()
.map(book->book.getAuthor())
.collect(Collectors.toSet());
System.out.println(authors);
}
}
class Book {
private String isbn;
private String title;
private String author;
private int nbrPages;
public Book(String isbn, String title, String author, int nbrPages) {
this.isbn = isbn;
this.title = title;
this.author = author;
this.nbrPages = nbrPages;
}
public String getTitle() {
return title;
}
public String getAuthor() {
return author;
}
public int nbrPages() {
return nbrPages;
}
public String getIsbn() {
return isbn;
}
}
Jag har inte testat själv, men rent spontant ser jag inte heller något fel?