जावा 8 स्ट्रीम के साथ कहते हैं कि मैं निम्नलिखित भंडार है की सुविधा देता है:स्प्रिंग डाटा जेपीए डेटा संग्रह स्थान
public interface UserRepository extends JpaRepository<User, Long> {
@Query("select u from User u")
Stream<User> streamAllPaged(Pageable pageable);
}
और मैं खोज करने के लिए करना चाहते हैं:
public Page<User> findAllUsers(Pageable page) {
Page<User> page = null;
try (Stream<User> users = userRepository.streamAllPaged(page)) {
Set<User> users = users.filter(u -> user.getName().equals("foo"))
.collect(Collectors.toSet());
//create page from set?
}
}
जाहिर है मैं एक sublist का उपयोग करें और मैन्युअल रूप से डाल सकता है पेज आकार इत्यादि। लेकिन मुझे लगता है कि ऐसा करने के लिए एक और "मानक" तरीका होना चाहिए?
मैंने सोचा होगा कि 'collect.partitioningBy' मदद कर सकता है, लेकिन धारा में किसी स्थिति की पहुंच के बिना कैसे नहीं देखते हैं। – Aaron
यदि आपको किसी अन्य स्ट्रीम का उपयोग करने में कोई फर्क नहीं पड़ता है, [यह प्रश्न] (http://stackoverflow.com/questions/29273705/how-to-paginate-a-list-of-objects-in-java-8) में जवाब। – Aaron