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

如何使用Java8 streams通过条件分隔列表

靳涵亮
2023-03-14
 List<Integer> odd = new ArrayList<Integer>();
 List<Integer> even = null;  
 List<Integer> myList = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
 even = myList.stream()
              .filter(item -> {
                   if(item%2 == 0) { return true;}
                   else { 
                           odd.add(item); 
                           return false;
                   }
              })
              .collect(Collectors.toList());

共有1个答案

雍焱
2023-03-14

下面是一个如何将列表中的元素(数字)以奇偶数字分隔的示例:

List<Integer> myList = Arrays.asList(1,2,3,4,5,6,7,8,9,10);

Map<Boolean, List<Integer>> evenAndOdds = myList.stream()
        .collect(partitioningBy(i -> i % 2 == 0));

您将得到如下所示的偶数/奇数列表(任一列表都可能为空):

List<Integer> even = evenAndOdds.get(true);
List<Integer> odd = evenAndOdds.get(false);

您可以在partitioningby中传递任何具有所需逻辑的lambda。

 类似资料:
  • 问题内容: 我有一个像这样的数组: 现在,我想按某种条件过滤该数组,只保留值等于2的元素,并删除值不等于2的所有元素。 所以我的预期结果数组将是: 注意:我想保留原始数组中的键。 如何使用PHP做到这一点?有内置功能吗? 问题答案:

  • 问题内容: 我有一个清单,我想分成几个小清单。 说出所有包含“ aaa”的项目,所有包含“ bbb”的项目以及更多谓词。 我该如何使用java8? 我看到了这篇文章,但只拆分为2个列表。 我看到了这篇文章,但是在Java 8之前已经很老了。 问题答案: 就@RealSkeptic中解释的那样,注释只能返回两个结果:true和false。这意味着您将只能将数据分为两组。 您需要的是某种可以让您确定应

  • 我有一份清单 我如何迭代列表并解析所有字符串,以便在迭代结束时我可以有一个包含如下内容的字符串

  • 问题内容: 我有一个基本的SQL查询,开始于: 现在,我想完成它,以便做到这一点(用伪代码编写) 根据要求,这是一个示例 @locid是用户给出的结果,例如‘33,234’ 如果@lid为空,那么我希望它输出具有name和application_id的location_id的所有行。否则,我希望它输出与@lid中提供的数字相关的所有行(代表location_id。 因此,如果@lid为0: 否则,

  • 问题内容: 我有3个表,分别为: 应用程序(ID,名称) 资源(ID,名称) ApplicationsResources(id,app_id,resource_id) 我想在GUI上显示所有资源名称的表。我想在每一行的一个单元格中列出该资源的所有应用程序(以逗号分隔)。 所以问题是,在SQL中执行此操作的最佳方法是什么,因为我需要获取所有资源,并且还需要获取每种资源的所有应用程序? 我是否先从资源

  • 问题内容: 我有一个csv文件,数据显示如下 我正在尝试将第一列保存到新文件(不包含字段分隔符,然后从主csv文件中删除第一列以及第一个字段分隔符。 有任何想法吗? 到目前为止,这是我尝试过的 但这不起作用 问题答案: 假设您的原始CSV文件名为“ orig.csv”: