Wpis z mikrobloga

#java #java8 #programowanie

Mirki, chcę zmapować w streamie pewne obiekty dodając do nich kilka informacji. Stworzyłem sobie rozszerzoną klasę o potrzebne pola:
Było:

class User{
int id;
String name;
int age;

A teraz będzie:

class User2{
int id;
String name;
int age;
boolean hasDog;
Date birthday;
}

Problem w tym, że aby ustawić hasDog i birthday - muszę pobrać z repozytorium dane i je przetworzyć.
Zrobiłem więc dwie metody: do ustawiania hasDog i birthday.
Mogę to zmapować tak:

List newUsers = oldUsers.getUsers.stream.map(u -> new User2(u.name, u.age, hasUserDog(u.id), setBirthday(u.id)).collect(toList());
Problem w tym, że w metodzie hasUserDog i setBirthday - pobieram te same dane (rekord dla użytkownika o danym id).
Czy można pobrać te dane w tym streamie -> a następnie je wrzucić do moich dwóch metod - tak, by nie pobierać dwa razy tego samego?

Z góry dzięki :)
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Godziu73: Przyjmują dlatego, że za pomocą id usera pobieram potrzebne dane z repozytorium. Chciałbym zrobić coś w stylu:
oldUsers.getUsers.stream.map(fetchUser -> repo.findUser(int id).
map(u -> new User2(u.name, u.age, hasUserDog(fetchUser), setBirthday(fetchUser)).collect(toList()); - tak by raz pobrać dane z bazy i wrzucić do tych dwóch metod to samo. Macie jakiś pomysł?
  • Odpowiedz
@Godziu73: Dzieki za odpowiedź. Problem w tym, że repozytorium zwraca obiekt innej klasy. Coś w stylu: muszę pobrać dane z klasy WiecejInfo, żeby ustawić te parametry. Musialbym zrobić coś w stylu
oldusers.stream.foreach(WiecejInfo wiecejInfo -> repoWiecejInfo.getData(user.id)...) chciałbym pobrać raz te dane, zamiast robić to osobno w metodach
  • Odpowiedz