在java 8中,根据某些过滤条件收集emp对象。
在主要班级
List<Emp> empList = Arrays.asList(
new Emp("aaa", language1),
new Emp("cc", language2),
new Emp("bb", language3),
new Emp("dd", language3)
);
empList.stream()
.flatMap(s->s.getLanguage().stream())
.filter(s->s.equals("java"))
.forEach(System.out::println); //Here just i am printing.
其实我需要收集new List<EMP>
如何收集所有拥有语言“java”的emp对象。我该怎么办?
答案 0 :(得分:5)
如果你想最终收集flatMap
个对象,你不应该使用Emp
,因为它会将每个元素更改为其他元素,并且很难将它们映射回来。
您应该将所有逻辑放在filter
中:&#34;如果Emp
包含getLanguage
&#34;,请保留"java"
对象。
empList.stream()
.filter(x->x.getLanguage().contains("java"))
.collect(Collectors.toList());
答案 1 :(得分:0)
你也可以这样做。
class SampleView(View):
sample_form = SingleSampleForm
def get(self, request, *args, **kwargs):
sample_form = self.sample_form()
self.context = {'sample_form': sample_form,}
return render(request,
'results/single_sample_search.html',
self.context)
def post(self, request, *args, **kwargs):
sample_form = self.sample_form(request.POST)
if sample_form.is_valid():
print('Valid')
else:
print('not valid')
self.context = {'sample_form': sample_form,}
return render(request,
'results/single_sample_search.html',
self.context)
在List<Object> optionMetas = new ArrayList<>();
Map<Long, Object> optionIdMetaMap_ = optionMetas.stream().filter(option -> option.getXX() || option.getXXX().equal("java"))
.collect(Collectors.toMap(Object::getKEY, item-> item));
答案 2 :(得分:0)