相关疑难解决方法(0)

带有批处理的Java 8 Stream

我有一个包含项目列表的大文件.

我想创建一批项目,使用此批处理发出HTTP请求(所有项目都需要作为HTTP请求中的参数).我可以通过for循环很容易地完成它,但作为Java 8的爱好者,我想尝试用Java 8的Stream框架编写它(并获得延迟处理的好处).

例:

List<String> batch = new ArrayList<>(BATCH_SIZE);
for (int i = 0; i < data.size(); i++) {
  batch.add(data.get(i));
  if (batch.size() == BATCH_SIZE) process(batch);
}

if (batch.size() > 0) process(batch);
Run Code Online (Sandbox Code Playgroud)

我想做一些很长的路要走 lazyFileStream.group(500).map(processBatch).collect(toList())

最好的方法是什么?

java batch-processing java-8 java-stream

80
推荐指数
8
解决办法
4万
查看次数

如何使用流在比赛后找到一个项目?

使用Java流,很容易找到与给定属性匹配的元素.
如:

 String b = Stream.of("a1","b2","c3")
     .filter(s -> s.matches("b.*"))
     .findFirst().get();
 System.out.println("b = " + b);
Run Code Online (Sandbox Code Playgroud)

产生:
b = b2

然而,通常人们在匹配后想要一个或多个值,而不是匹配本身.我只知道如何用旧时尚循环来做到这一点.

    String args[] = {"-a","1","-b","2","-c","3"};
    String result = "";
    for (int i = 0; i < args.length-1; i++) {
        String arg = args[i];
        if(arg.matches("-b.*")) {
            result= args[i+1];
            break;
        }
    }
    System.out.println("result = " + result);
Run Code Online (Sandbox Code Playgroud)

哪个会产生:
结果= 2

使用Java 8 Streams有一种干净的方法吗?例如,给定上面的数组和谓词,将结果设置为"2" s -> s.matches("-b.*").

如果你可以获得下一个值,那么也可以获得下一个N值或所有值的列表/数组,直到另一个谓词匹配为止s -> s.matches("-c.*").

java regex lambda

8
推荐指数
1
解决办法
2778
查看次数

Java 8:如何使用lambda将列表转换为列表

我正在尝试将列表拆分为列表,其中每个列表的最大大小为4.

我想知道如何使用lambdas做到这一点.

目前我正在这样做的方式如下:

List<List<Object>> listOfList = new ArrayList<>();

final int MAX_ROW_LENGTH = 4;
int startIndex =0;
while(startIndex <= listToSplit.size() )    
{
    int endIndex = ( ( startIndex+MAX_ROW_LENGTH ) <  listToSplit.size() ) ? startIndex+MAX_ROW_LENGTH : listToSplit.size();
    listOfList.add(new ArrayList<>(listToSplit.subList(startIndex, endIndex)));
    startIndex = startIndex+MAX_ROW_LENGTH;
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

似乎没有一种简单的方法可以使用lambdas来拆分列表.虽然所有的答案都非常受欢迎,但它们也是lambdas不简化事物的一个很好的例子.

java lambda java-8

7
推荐指数
2
解决办法
5264
查看次数

标签 统计

java ×3

java-8 ×2

lambda ×2

batch-processing ×1

java-stream ×1

regex ×1