求最值,求和

阅读 1.8k

在程序开发中,求最值和求和,是我们常常会遇到的一种最基本的运算。本篇将三种语言放在一起进行对比,来看看它们各自是怎么做的,有什么风格上的差异。

Python

Python擅长数据处理和运算,所以,我们先来看用它来怎么实现:

digits = [-9, 20, 0, 6]
print(min(digits))
print(max(digits))
print(sum(digits))

digits是一个列表(类似JavaScript中的数组),从中可以看到,Python的设计风格,非常的简单粗暴,求和,用一个sum()方法就搞定了,干净简洁,没有丝毫的拖泥带水。

JavaScript

和Python一样,JavaScript也是脚本语言,我们来看看用JavaScript怎么实现:

// 求最大值
const digits = [-9, 20, 0, 6]
console.log(Math.max(...digits))

// 求和
sum = digits.reduce((prev, current) => prev + current)

和Python不同,对于求最值,max方法并非全局可用,而需要用Math.max()来进行求和,另外,Math.max()的参数无法接收数组,所以,还需要用展开运算符将其展开。

对于求和,JavaScript并没有提供一个内置的求和函数,需要自己写一个迭代操作来进行求和,当然,用forEach遍历也可以。

整体而言,在JavaScrip中,这些基本的运算,并没有用Python处理起来那么方便,而Python几乎就是傻瓜式的。

Java

最后,我们再来看看Java中是怎么实现的,先来看求最值:

public class GetMax {
    public static void main(String args[]) {
        int [] digits = { -9, 20, 0, 6 };
        int max = digits[0];

        for(int i = 1; i < digits.length; i++) {
            if (digits[i] > max) {
                max = digits[i];
            }
        }

        System.out.println(max);
    }
}

因为Java是纯粹的面相对象语言,所以,必须要先创建一个类。另外,由于Java中并没有提供全局的求最值的方法,所以,只能循环比较得出最值。当然,也可以使用集合的方式来求最值:

import java.util.Arrays;
import java.util.Collections;

public class GetMax2 {
    public static void main(String args[]) {
        Integer[] numbers = { -9, 20, 0, 6 };
  
        int max = Collections.max(Arrays.asList(numbers));
        System.out.println(max);
    }
}

不管怎么说,用Java求最值明显麻烦得多。那么求和呢?

import java.util.Arrays;
import java.util.List;

public class GetSum {
    public static void main(String args[]) {
        List<Integer> list = Arrays.asList(new Integer[] { -9, 20, 0, 6});
        Integer sum = list.stream().reduce((x, y) -> x + y).get();
        System.out.println(sum);
    }
}

上面使用了的方式来进行求和。

小结

虽然只是一个简单的例子,但是,从中我们可以发现,这三种语言的设计风格有着明显的不同,Python语言设计非常简洁,使用起来最为方便,而Java由于是纯粹的面向对象语言,且是强类型语言,所以,它的操作最为繁琐。

参考

最后编辑于: 2022-04-16

评论(0条)

(必填)
复制成功