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

获取单行程序中Stream/List的最后一个元素

宰父单弓
2023-03-14

如何在下面的代码中获取流或列表的最后一个元素?

其中data.carea列表 :

CArea first = data.careas.stream()
                  .filter(c -> c.bbox.orientationHorizontal).findFirst().get();

CArea last = data.careas.stream()
                 .filter(c -> c.bbox.orientationHorizontal)
                 .collect(Collectors.toList()).; //how to?

正如您所看到的,使用特定的过滤器获取第一个元素并不难。

    null

我看不出在list接口中没有提供first()last()方法的任何理由,因为其中的元素是有序的,而且大小是已知的。

但正如最初的答案:如何获得有限的最后一个元素?

就我个人而言,这是我能得到的最接近的结果:

int lastIndex = data.careas.stream()
        .filter(c -> c.bbox.orientationHorizontal)
        .mapToInt(c -> data.careas.indexOf(c)).max().getAsInt();
CArea last = data.careas.get(lastIndex);

共有1个答案

湛鸿
2023-03-14

可以使用Stream::Reduce方法获取最后一个元素。下面的清单包含了一般情况下的一个最小示例

Stream<T> stream = ...; // sequential or parallel stream
Optional<T> last = stream.reduce((first, second) -> second);

此实现适用于所有有序流(包括从列表创建的流)。对于无序流,由于明显的原因,没有指定将返回哪个元素。

该实现同时适用于顺序流和并行流。乍一看,这可能会让人吃惊,不幸的是,文档中没有明确说明这一点。但是,它是streams的一个重要特征,我试图澄清一下:

    null
CArea last = data.careas
                 .stream()
                 .filter(c -> c.bbox.orientationHorizontal)
                 .reduce((first, second) -> second).get();
 类似资料:
  • 问题内容: 如何在以下代码中获取流或列表的最后一个元素? 哪里是: 如您所见,获得第一个元素一定并不困难。 但是,获得单线的最后一个元素确实是一个痛苦: 看来我无法直接从。(仅对有限的流有意义) 这似乎也不能得到像和从接口,这实在是一种痛苦。 我看不到在接口中不提供and 方法的任何参数,因为其中的元素是有序的,而且大小是已知的。 但是按照原始答案:如何获得有限的最后一个元素? 就个人而言,这是我

  • rank ▲ ✰ vote url 61 374 45 700 url 获取列表最后一个元素 在Python里,如何获取一个列表的最后一个元素? some_list[-1]最短最Pythonic的方法. 事实上你可以用这个语法做好多事.some_list[-n]语法获取倒数第n个元素.所以some_list[-1]获取最后一个元素,some_list[-2]获取倒数第二个,等等.最后some_li

  • 我有个问题。。。代码运行正常,但无法获取最后一行和最后一列的最后一个单元格的值。下面是代码。。。请引导 使用此代码,我动态地向JTable添加行:if(e.getSource()==addb){ 下面是从JTable行以及以后而不是系统中获取值的代码。出来println()我将向数据库发送数据。。。

  • 问题内容: 我正在使用String split方法,并且我想拥有最后一个元素。数组的大小可以更改。 例: 我想分割上面的字符串并得到最后一个项目: 我不知道在运行时数组的大小:( 问题答案: 将数组保存在局部变量中,并使用数组的字段查找其长度。减去1以说明它是基于0的: 注意:如果原始字符串仅由分隔符组成,例如或,则为0,这将引发ArrayIndexOutOfBoundsException。示例:

  • 问题内容: 我有一个集合,我想获取集合的最后一个元素。最直接,最快捷的方法是什么? 一种解决方案是先toArray(),然后返回数组的最后一个元素。还有其他更好的方法吗? 问题答案: 这不是一个非常有效的解决方案,但是可以工作一个:

  • 问题内容: 在Python中,如何获取列表的最后一个元素? 问题答案: 是最短和最的。 实际上,你可以使用此语法做更多的事情。该语法获取第n到最后一个元素。因此获取最后一个元素,获取倒数第二个,依此类推,一直向下到,这将为你提供第一个元素。 你也可以通过这种方式设置列表元素。例如: 请注意,如果期望的项目不存在,则按索引获取列表项将引发。这意味着如果为空将引发异常,因为空列表不能有最后一个元素。