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

用Java stream()API过滤掉单个元素而不带列表[重复]

阎建中
2023-03-14

我想知道是否有一种方法可以直接在Java中通过使用stream().filter()过滤出单个元素,而不需要创建列表和获取0索引。

String foo = stringList
            .stream().filter(item -> item.equals("foo"))
            .collect(Collectors.toList()).get(0);

共有1个答案

龙正初
2023-03-14

是的,您可以调用findfirst():

String foo = stringList
            .stream().filter(item -> item.equals("foo"))
            .findFirst().get();

额外的好处是,它返回一个可选,它允许您处理没有元素与筛选器匹配的情况:

String foo = stringList
            .stream().filter(item -> item.equals("foo"))
            .findFirst().orElse(...);
 类似资料:
  • 我想知道是否有一种方法可以直接在Java中通过使用stream().filter()过滤出单个元素,而不需要创建列表和获取0索引。

  • 问题内容: 我想从列表中筛选元素,并使用lambda遍历每个元素的元素。例如,给定列表: 假设我只想保留列表总和大于N的元素。我尝试编写: 但我得到了错误: 在将每个元素的值分配给x,y和z时如何进行迭代?像zip之类的东西,但列表很长。 谢谢, ps我知道我可以这样写:filter(lambda x:sum(x)…,a)但这不是重点,想象一下这些不是数字而是任意元素,我想将它们的值分配给变量名。

  • 问题 你有一个数据序列,想利用一些规则从中提取出需要的值或者是缩短序列 解决方案 最简单的过滤序列元素的方法就是使用列表推导。比如: >>> mylist = [1, 4, -5, 10, -7, 2, 3, -1] >>> [n for n in mylist if n > 0] [1, 4, 10, 2, 3] >>> [n for n in mylist if n < 0] [-5, -7,

  • 我陷入了java流操作的边缘案例... 我想对以下行为进行编码:“从一个任意的水果篮子中,收集20个最小的,除了最小的梨,因为我们不想那样。” 额外的奖励:来的篮子可能没有任何梨。 null 我不能使用本地布尔值并在筛选第一个pear后将其设置为,因为lambda中的所有局部变量都必须是final的。 最坏的情况是,我可以将篮子一分为二,梨和非梨,对梨进行排序,如果有的话,适当地将它们子列表。这看

  • 我正在寻找在Java-8中过滤列表的最干净的方法,用一个简单的lambda ,而不用创建一个新的列表。 特别是,这种解决方案不合适,因为返回一个新的: 注意,下面的解决方案也不起作用,因为列表应该< code>clear()其原始值(但是很明显,如果您在过滤之前清除它,就没有什么可过滤的了...): (此外,我更喜欢不使用第三方库或框架的解决方案)

  • 从数组中移除 falsey 值元素。 使用 Array.filter() 过滤掉数组中所有 假值元素(false, null, 0, "", undefined, 和 NaN)。 const compact = arr => arr.filter(Boolean); compact([0, 1, false, 2, '', 3, 'a', 'e' * 23, NaN, 's', 34]); //