Java lambda 循环累加求和代码

java 8 stream 提供了下面几种类型的求和

Stream::mapToInt

Stream::mapToDouble

Stream::mapToLong

 public void test() {
 List<Person> people = new ArrayList<>();
 people.add(new Person("zhangsan",20));
 people.add(new Person("lisi", 26));
 people.add(new Person("wangwu",35));

 int sum = people.stream()
      .mapToInt(p -> p.getAge())
      .sum();
 System.out.println("Total of ages " + sum);
 }

但是没有BigDecimal类型,可以使用下面方法实现

  public void test() {
 List<Person> list = new ArrayList<>();
 list.add(new Person("zhangsan", 20, new BigDecimal(10.5)));
 list.add(new Person("lisi", 26, new BigDecimal(22.2)));
 list.add(new Person("wangwu", 35, new BigDecimal(15.54)));

 BigDecimal amounts = list.stream().map(item -> item.getAmount())
  .reduce(BigDecimal.ZERO, BigDecimal::add);
 amounts = amounts.setScale(1, BigDecimal.ROUND_DOWN);
 System.out.println("Total of amounts:" + amounts);

 // 或者
 BigDecimal sum = list
  .stream()
  .map(Person::getAmount)
  .reduce(BigDecimal::add)
  .get();
    sum = sum.setScale(1, BigDecimal.ROUND_DOWN);
 System.out.println("Total of sums: " + sum);
 }

补充知识:Java算法——求1到100累加的和,3种循环

1、for循环

int sum = 0;

for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("1到100累加的和为:" + sum);

2、while循环

int sum = 0;
int i = 1;
while (i <= 100) {
sum += i;
i++;
}
System.out.println("1到100累加的和为:" + sum);

3、do...while循环

int sum = 0;
int i = 1;
do {
sum += i;
i++;
} while (i <= 100);
System.out.println("1到100累加的和为:" + sum);

以上这篇Java lambda 循环累加求和代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • JAVA8独有的map遍历方式(非常好用)

    使用JAV8 带来的map遍历方式使遍历非常简单 public class LambdaMap { private Map<String, Object> map = new HashMap<>(); @Before public void initData() { map.put("key1", "value1"); map.put("key2", "value2"); map.put("k

  • Java编程中使用lambda表达式的奇技淫巧

    为什么使用Lambda表达式 先看几个例子: 第一个例子,在一个独立的线程中执行某项任务,我们通常这么实现: class Worker implements Runnable { public void run() { for (int i = 0; i < 100; i++) doWork(); } ... } Worker w = new Worker(); new Thread(w).start(); 第二个例子,自定义字符串比较的方法(通过字符串长度),一般这么做: class Leng

  • Java 8跳过本次循环,继续执行以及跳出循环,终止循环的代码实例

    在Java8之前,最开始使用for i 循环,很老旧,后来有了高级的for each 循环,然后这个跳出本次循环和跳出所有的for循环,都简单,稍微没见过的就是跳出多层for循环. 然后就是Java8出的foreach循环,这个循环里面,break和continue都不管用啦.需要使用return,这个只能跳过本次循环,还是会继续执行for循环的,那么怎么跳出这个Java8的foreach循环呢? 下面对所有的循环,都来了一次操作. 看看如何,跳出当前循环,继续执行:或者直接跳出for循环:或者

  • Java8 lambda表达式2种常用方法代码解析

    与python不一样,python lambda是定义匿名函数,而在java8中lambda是匿名内部类 例1.用lambda表达式实现Runnable 我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现Runnable接口是匿名类的最好示例.看一下Java 8之前的runnable实现方法,需要4行代码,而使用lambda表达式只需要一行代码.我们在这里做了什么呢?那就是用() -> {}代码块替代了整个匿名类. // Java 8之前: new Thread(ne

  • Java lambda 循环累加求和代码

    java 8 stream 提供了下面几种类型的求和 Stream::mapToInt Stream::mapToDouble Stream::mapToLong public void test() { List<Person> people = new ArrayList<>(); people.add(new Person("zhangsan",20)); people.add(new Person("lisi", 26)); peop

  • java lambda循环_使用Java 8 Lambda简化嵌套循环操作

    java lambda循环 对于每个经常需要在Java 8(或更高版本)中使用多维数组的人来说,这只是一个快速技巧. 在这种情况下,您可能经常会以类似于以下代码的结尾: float[][] values = ... for (int i = 0; i < values.length; i++) { for (int k = 0; k < values[i].length; k++) { float value = values[i][k]; // do something with i, k

  • C语言规律循环累加求和案例

    我就废话不多说了,大家还是直接看代码吧~ #include <stdio.h> void main(){ int i; float a,b,c,d,t; a = 1.0; b = 2.0; i = 1; t = 0; for (i = 1; i <= 20; i++) { if (i < 2){ c = b / a; t = c+t; a = a + 1; b = b + 1; //第一项不符合规律 } else { c = b / a; t = t + c; d = a; a =

  • python 实现分组求和与分组累加求和代码

    我就废话不多说了,大家还是直接看代码吧! # -*- encoding=utf-8 -*- import pandas as pd data=['abc','abc','abc','asc','ase','ase','ase'] num=[1,2,2,1,2,1,2] df1=pd.DataFrame({'name':data,'num':num}) print(df1) df1['mmm']=df1['num'] df2=df1.groupby(['name', 'num'], as_inde

  • Java Lambda List转Map代码实例

    在有些开发场景,需要对 List 对象列表进行过滤处理,并将有用的数据存放到Map中. 例如:告警对象,包含告警uuid(alarmUuid) 和 设备uuid(objUuid),需要对 objUuid = -1的告警进行过滤,并将过滤后告警数据的alarmUuid和 objUuid以键值对的形式保存到Map中. 1.告警对象定义如下: /** * Created by Miracle Luna on 2020/3/16 */ public class AlarmInfoResponse { p

  • Java Lambda 表达式详解及示例代码

    Java Lambda 表达式是 Java 8 引入的一个新的功能,可以说是模拟函数式编程的一个语法糖,类似于 Javascript 中的闭包,但又有些不同,主要目的是提供一个函数化的语法来简化我们的编码. Lambda 基本语法 Lambda 的基本结构为 (arguments) -> body,有如下几种情况: 参数类型可推导时,不需要指定类型,如 (a) -> System.out.println(a) 当只有一个参数且类型可推导时,不强制写 (), 如 a -> System.o

  • Java之map的常见用法讲解与五种循环遍历实例代码理解

    目录 一.概述: 二.Map集合的功能介绍 三.map官方总结 四.实例 五.循环遍历的五种方法 一.概述: 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 Map接口和Collection接口的不同 Map是双列的,Collection是单列的 Map的键唯一,Collection的子体系Set是唯一的 Map集合的数据结构针对键有效,跟值无关;Collection集合的数据结构是针对元素有效 二.Map集合的功能介绍 a:添加功能 V put(K key,V val

  • Java Lambda表达式之从集合到流

    从集合到流 现在我们用代码来具体表示对某一集合进行迭代操作,我们希望定义一个Contact类来表示联系人,并将ContactList中所有String类型的联系人姓名全部包装进Contact类中: List<Contact> contacts = new ArrayList<>(); contactList.forEach(new Consumer<String>() { @Override public void accept(String s) { Contact

  • Java Lambda表达式详解和实例

    简介 Lambda表达式是Java SE 8中一个重要的新特性.lambda表达式允许你通过表达式来代替功能接口. lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块). Lambda表达式还增强了集合库. Java SE 8添加了2个对集合数据进行批量操作的包: java.util.function 包以及 java.util.stream 包. 流(stream)就如同迭代器(iterator),但附加了许多额外的功能.

  • Java语言求解完美数代码分析

    1.概念 首先我们理解一下,什么叫做完美数? 问题描述:若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数.简称"完数" 例如, 6=1+2+3 28=1+2+4+7+14 496=1+2+4+8+16+31+62+124+248 8128=1+2+4+8+16+32+64+127+254+508+1016+2032+4064 按照完数的定义,其实用程序求解完数并不是太难,先求解出这个数的所有真因子,然后相加,判断是否等于它本身即可.但是,在这个数

随机推荐