当前位置: 首页 > 知识库问答 >
问题:

多个流筛选器或forEach if-else

华鹭洋
2023-03-14
    null
List<String> sublist1 = list.stream().filter(condition1).collect(ImmutableList.toImmutableList());
List<String> sublist2 = list.stream().filter(condition2).collect(ImmutableList.toImmutableList());
List<String> sublist1 = new LinkedList<>();
List<String> sublist2 = new LinkedList<>();
list.stream().forEach(element -> {
    if(condition1) sublist1.add(element);
    else if (condition2) sublist2.add(element);
})

共有1个答案

戚正业
2023-03-14

如果特定有两个条件导致两个子列表,并且它们是可选的,即两个条件中只有一个可能为true,则可以在filterpredicate.OR中使用或,然后根据任一条件使用Collectors.PartitioningBy

java prettyprint-override">Map<Boolean, List<String>> sublistMap = list
        .stream()
        .filter(condition1.or(condition2))
        .collect(Collectors.partitioningBy(condition1, Collectors.toUnmodifiableList()));

List<String> sublist1 = sublistMap.get(Boolean.TRUE); // condition1
List<String> sublist2 = sublistMap.get(Boolean.FALSE); // condition2

测试

List<String> list = Arrays.asList("a", "b", "cc", "ddd", "aaaa", "vvv", "oo");
Predicate<String> condition1 = (s) -> s.contains("o");
Predicate<String> condition2 = (s) -> s.contains("a");

System.out.println(sublist1);
System.out.println(sublist2);

输出:

[oo]
[a, aaaa]
 类似资料:
  • 首先,我试图使选择所有复选框,如果我单击表头中的选择所有复选框,整个表行将选择并显示一个复选框反向消息,即我选择了多少复选框。这里的问题是,如果我单击select all复选框,反向消息不会显示楼上的表,即我选择了多少行。 其次,如果我从任何列中筛选任何数字,相同的数字将显示同一列中有多少行具有相同的数字。如果我选中了所有复选框,那么反向消息将显示我选中了多少行复选框。这里,问题是显示整个表行计数

  • 试图从结构中获取项目列表,避免大量的for循环和if,所以我想使用 例如,lets具有以下结构: 我要创建: null List TestitemsFiltered=House1.FamilyList.Stream().FlatMap(f->f.PersonList.Stream().FlatMap(p->p.ItemList.Stream().Filter(Item->Item.Name.Equ

  • 结果应该是满足这些条件的WWS个体。例如,当数字为4时,则结果应为WW1和WW2 我怀疑我的案例需要这样的东西,但它仍然不会返回结果:

  • 有什么建议吗?

  • 筛选器。 Usage 全部引入 import { Picker } from 'beeshell'; 按需引入 import Picker from 'beeshell/dist/components/Picker'; Examples Code import { Picker } from 'beeshell'; <Picker ref={(c) => { this._pick

  • 我试图为一个问题找到一个解决方案,在这个问题上,我需要根据多个标准来细化结果。我有多个选择标准: 水果-苹果橙子葡萄 蔬菜-番茄土豆西兰花 坚果-核桃花生杏仁 谷物-玉米小麦大米 香料-肉桂姜椒 用户只能从每个组中选择一个标准,例如,您可以选择苹果,但不能选择橘子或葡萄。参见jsfiddle。 然后我有多个篮子,里面有不同的物品。 但问题是,这些结果必须基于多个标准进行精炼。例如,我选择了苹果,然