相关疑难解决方法(0)

如何优化Scala中的for-understanding和循环?

所以Scala应该和Java一样快.我正在重新审视我最初用Java解决的Scala中的一些Project Euler问题.具体问题5:"从1到20的所有数字均可被整除的最小正数是多少?"

这是我的Java解决方案,在我的机器上完成需要0.7秒:

public class P005_evenly_divisible implements Runnable{
    final int t = 20;

    public void run() {
        int i = 10;
        while(!isEvenlyDivisible(i, t)){
            i += 2;
        }
        System.out.println(i);
    }

    boolean isEvenlyDivisible(int a, int b){
        for (int i = 2; i <= b; i++) {
            if (a % i != 0) 
                return false;
        }
        return true;
    }

    public static void main(String[] args) {
        new P005_evenly_divisible().run();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我对Scala的"直接翻译",需要103秒(147倍!)

object P005_JavaStyle {
    val t:Int = 20;
    def run {
        var …
Run Code Online (Sandbox Code Playgroud)

java performance for-loop scala while-loop

131
推荐指数
5
解决办法
2万
查看次数

在Traversable的foreach方法中获取当前元素的索引?

假设我有两个数组:

val ar1 = Array[String]("1", "2", "3")
val ar2 = Array[String]("1", "2", "3", "4")
Run Code Online (Sandbox Code Playgroud)

现在对于每个元素ar1,我想首先将该元素与相应的元素连接起来,ar2然后打印结果.一种方法是:

List.range(0, ar1.size).foreach(i => println(ar1(i)+ar2(i)))
Run Code Online (Sandbox Code Playgroud)

如果有一个foreach变体允许我直接使用索引ar1而不是首先构造整数列表,那会更好.

也许有更好的方法?

scala

57
推荐指数
2
解决办法
5万
查看次数

标签 统计

scala ×2

for-loop ×1

java ×1

performance ×1

while-loop ×1