4 svar
70 visningar
Aedrha är nöjd med hjälpen
Aedrha 86
Postad: 18 jul 17:44 Redigerad: 18 jul 17:49

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!

CurtJ 466
Postad: 18 jul 21:41

Vad är det som inte fungerar? Jag tycker det ser ok ut. Skriv ut set'et authors och kontrollera

datav 32
Postad: 18 jul 22:47

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;
	   }
	}



Dracaena 5183 – Moderator
Postad: 18 jul 22:54

Jag har inte testat själv, men rent spontant ser jag inte heller något fel?

Aedrha 86
Postad: 19 jul 06:02 Redigerad: 19 jul 06:02

@datav

@Dracaena

Tack så jätte mycket! Fastnade jätte hårt och stirrade mig blind på syntaxen!
Funkar nu!

Svara Avbryt
Close