Something like this to get one of the lists. List<Object> inDateList = list.stream().filter(o-> startDate< o.createDate && o.createDate< endDate).collect(Collectors.toList());
then List<Object> outDateList = new ArrayList<>(list); outDateList.removeAll(inDateList);
EDIT
Just to clarify on my note above.
public Map<String, Set<Proposal>> groupProposals(Iterable<Proposal> proposals) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
return proposals.stream()
//GroupingBy creates the Map<Key, Collection<Something>>
.collect(Collectors.groupingBy(p->sdf.format(p.getCreateDate()),//Creates the Key and buckets
Collectors.mapping(i-> i, Collectors.toSet()))); //what kind of buckets do you want.
}