相关疑难解决方法(0)

使用带有lambda的JDK8压缩流(java.util.stream.Streams.zip)

在带有lambda b93的JDK 8中,b93中有一个类java.util.stream.Streams.zip可用于压缩流(这在教程Exploring Java8 Lambdas中说明.Dhananjay Nene的第1部分).这个功能:

创建一个惰性和顺序组合Stream,其元素是组合两个流的元素的结果.

然而在b98中,这已经消失了.事实上,在b98Streams中的java.util.stream中甚至无法访问该类.

是否已移动此功能,如果是这样,我如何使用b98简洁地压缩流?

我想到的应用程序是在Shen的这个java实现中,我在其中替换了zip中的zip功能

  • static <T> boolean every(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred)
  • static <T> T find(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred)

具有相当冗长代码的函数(不使用b98中的功能).

lambda functional-programming lazy-evaluation java-8 java-stream

141
推荐指数
9
解决办法
6万
查看次数

同时求和的最佳方式

我正在尝试计算一些大数字.为了加快计算速度,我想利用多线程.每个线程都应该计算一个数字,最后计算一个总和.

我曾经看过一些与a SumThread和a Collector有关的东西,如下所示:

public BigInteger compute(int p) {
    Collector c = new Collector(p);

    for(T element : Collection<T> bigCollection) {
        new SumThread(c) {

            @Override
            protected void doTheJob() {
                long big = someVeryComplexCalculation(element, ...); //n!
                receive(BigInteger.valueOf(big));
            }

        }
    }

    if(collector.isReady())
        return collector.getResult();

    return null;
}

public class Collector {

    private int numberOfProcesses;
    private int numberOfAllowedProcesses;
    private BigInteger result;

    public Collector(int n) {
        numberOfAllowedProcesses = n;
        numberOfProcesses = 0;
        result = BigInteger.ZERO;
    }

    synchronized public void enter() throws InterruptedException { …
Run Code Online (Sandbox Code Playgroud)

java parallel-processing concurrency multithreading biginteger

6
推荐指数
1
解决办法
975
查看次数