2015-09-16 11 views
20

Sto cercando di refactoring come ho usato un flusso in alcuni del mio codice. Il primo esempio è come l'ho fatto al momento. Il secondo esempio è quello che sto cercando di far sembrare.stream list in un set

Set<String> results = new HashSet<String>(); 

someDao.findByType(type) 
      .stream() 
      .forEach(t-> result.add(t.getSomeMethodValue())); 

Potrebbe sembrare qualcosa del genere? Se sì, come faccio a farlo?

Set<String> results = someDao.findByType(type) 
      .stream() 
      .collect( /* ?? no sure what to put here */); 
+2

è necessario mappare gli elementi stream prima di raccogliere nel set. 'DaoDao.findByType (type) .stream(). map (TheClass :: getValue) .collect (toSet()); ' –

risposta

28

Uso Collectors.toSet:

Set<String> results = someDao.findByType(type) 
     .stream() 
     .map(ClassName::getValue) 
     .collect(Collectors.toSet());