का उपयोग कर संग्रह खाली नहीं है या नहीं, यह जांचने के लिए कि मैं जावा 8 में नया हूं। मुझे समझ में नहीं आता कि कोड के निम्नलिखित भाग में क्या गलत है। विचार Collection<User>
भेजा जाना है यदि यह खाली नहीं है। लेकिन अगर संग्रह HttpStatus.NOT_FOUND
इकाई प्रतिक्रिया भेजने से खाली है।जावा स्ट्रीम
@RequestMapping(value = "/find/pks",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Collection<User>> getUsers(@RequestBody final Collection<String> pks)
{
return StreamSupport.stream(userRepository.findAll(pks).spliterator(), false)
.map(list -> new ResponseEntity<>(list , HttpStatus.OK))
.orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
}
ग्रहण मुझे निम्नलिखित बिंदु .orElse
विधि
orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND))
प्रकारStream<ResponseEntity<User>>
मेरे आधार इंटरफेस विधि
Iterable<T> findAll(Iterable<PK> pks);
Stream.map() स्ट्रीम स्ट्रीम करता है, और स्ट्रीम में कोई ऑरल() विधि नहीं होती है। एक इटरटेबल लौटकर आप अपना जीवन जटिल बना रहे हैं। आप एक सूची या सेट, या यहां तक कि एक संग्रह वापस क्यों नहीं करते हैं, और उपयोग है लक्षण()? बीटीडब्ल्यू, आप जो मैपिंग कर रहे हैं वह एक सूची नहीं है, यह एक उपयोगकर्ता है।यदि आप वास्तव में Iterable का उपयोग करना जारी रखना चाहते हैं, तो iterable.iterator()। HasNext() का उपयोग यह देखने के लिए करें कि यह खाली है या नहीं। –
इंटरफ़ेस स्प्रिंग पैकेजों में से एक द्वारा प्रदान किया जाता है।)))) –
फिर iterable.iterator()। HasNext() का उपयोग यह देखने के लिए करें कि यह खाली है या नहीं। लेकिन उसने कहा, मैं इस तरह के मामले में 404 वापस नहीं आऊंगा। बस एक खाली सूची के साथ एक 200 वापस। 404 एक अज्ञात संसाधन के लिए है जिसे आप प्राप्त करने का प्रयास करते हैं। आप यहां संसाधनों की खोज कर रहे हैं, और कुछ भी नहीं ढूंढना एक वैध परिणाम है। –