How to check if Collection is not empty using java Stream

You are mixing two things up. The first task is to convert the Iterable to a Collection which you can indeed solve using the Stream API:

Collection<User> list=
    StreamSupport.stream(userRepository.findAll(pks).spliterator(), false)
   .collect(Collectors.toList());

Note that this stream is a stream of Users, not a stream of lists. Therefore you can’t map a list to something else with this stream. The map operation will map each element of the stream to a new element.

Then you can use this list to create the ResponseEntity

return list.isEmpty()? new ResponseEntity<>(HttpStatus.NOT_FOUND):
                       new ResponseEntity<>(list, HttpStatus.OK);

You can combine these steps by creating a Collector performing this steps though this does not provide any advantage, it’s only a matter of style:

ResponseEntity<User> responseEntity=
    StreamSupport.stream(userRepository.findAll(pks).spliterator(), false)
   .collect(Collectors.collectingAndThen(Collectors.toList(),
      list -> list.isEmpty()? new ResponseEntity<>(HttpStatus.NOT_FOUND):
                              new ResponseEntity<>(list, HttpStatus.OK) ));

It's not necessary, and often a mistake, to cram everything into one line. In this case, you can't - there's no such API for your intention.

Keep it simple:

Collection<User> list = <your stream code that gets a list>;
if (list.isEmpty())
    return new ResponseEntity<>(HttpStatus.NOT_FOUND);
return new ResponseEntity<>(list, HttpStatus.OK);

but if you absolutely must:

return <your code>.map(list -> new ResponseEntity<>(list, list.isEmpty() ? HttpStatus.NOT_FOUND : HttpStatus.OK));