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

如何在Java中动态添加操作流?

翟奇
2023-03-14

我有以下代码:

private List<EmployeeDto> doTransformation(List<Employee> employees, Optional<Predicate<Employee>> filter, Integer limit, Integer offset) {

    Stream<Employee> stream = filter.isPresent() ? employees.stream().filter( filter.get() ) : employees.stream();
    // do offset sql based for stream //not working
    if ( offset != null ) {
       stream.skip( offset );
    }    
    // do limit sql based for stream //not working
    if ( limit != null ) {
        stream.limit( limit );
    }
    return stream
        .map( employee -> /*do some mapping to EmployeeDto*/ )
        .collect( Collectors.toList() );
}

在这部分代码中:

  1. 如果存在过滤器,则将过滤器应用于流;
  2. 想要对此流进行一些偏移和限制,但这不起作用,因为“应该只对一个流进行一次操作(调用中间或终端流操作)”。
  3. 映射到dto对象并收集为列表。

如何以其他方式进行流操作skip()和limit()。提前感谢。

共有1个答案

郑翰海
2023-03-14

我做了这个小例子,也许它对你的情况有用?

Integer offset = null;
Integer limit = 2;

List<String> list = new ArrayList<>(Arrays.asList("batman", "one", "seven", "woohooo", "awesomeness"));
List<Integer> lengths = list.stream()
    .skip(offset != null ? offset : 0)
    .limit(limit != null ? limit : Integer.MAX_VALUE)
    .map(String::length) //as an example of mapping
    .collect(Collectors.toList());

lengths.forEach(System.out::println);
 类似资料:
  • 问题内容: 如何在Android中动态添加按钮? 问题答案:

  • 问题内容: 我正在做的事情非常精简,可以解决问题。 我有一个简单的。每当您单击一个元素时,它都会添加另一个元素。但是,需要先对其进行编译才能正确呈现。 我的研究使我走向了。但是所有示例都使用了一个复杂的结构,我真的不知道如何在这里应用它。 小提琴在这里:http : //jsfiddle.net/paulocoelho/fBjbP/1/ JS在这里: Josh David Miller的解决方案:

  • 我需要向常规类列表中添加一个动态类,但不知道如何添加(我使用的是babel),如下所示: 有什么想法吗?

  • 问题内容: 我已经创建了意图,实体和对话框,没有问题。但是现在我正在尝试做到这一点,以便当用户发送“再见”时,应用程序将关闭。根据文档,我必须命名一个与意图一起执行的动作。我怎么做?是通过代码还是通过对话工作区平台? 问题答案: 您可以使用或为此。如何使用上下文变量?在您的“高级”响应中添加“上下文”和值,请检查我的示例。 为此,我使用了简单的对话。 在您的Watson Developer Clo

  • 问题内容: 我知道我可以通过执行以下操作来向对象动态添加实例方法: 稍后我可以打电话给我,自我将被正确绑定,一切正常。 现在,我的问题是:如何做完全相同的事情来获得用@property装饰新方法的行为? 我猜是这样的: 但是,这样做会返回一个属性对象。 问题答案: 在描述对象需要住 类 , 未 在 实例中 ,有你想要的效果。如果您不想更改现有的类以避免更改其他实例的行为,则需要创建“每个实例的类”

  • 问题内容: 我正在尝试从骆驼路线中删除一些样板。 例如,让我们考虑两条路线,它们是相似的,并且它们的大部分内部物质都可以生成。我已经创建了一个组件“模板”,该模板创建了,并修改了XML配置以使用模板组件。 正在从中定义自定义方法(添加路线定义)。因此,在启动Camel上下文时,路由定义会出现在上下文中,但是框架不会为其创建路由服务,因此它们不会启动。 如何开始添加路线? 可能我遇到了XY问题,您可