list.stream求和
时间: 2023-09-17 07:07:45 浏览: 148
可以使用 Java 8 中的 Stream API 来实现对一个 List 中所有元素的求和操作,具体代码如下:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int sum = list.stream().mapToInt(Integer::intValue).sum();
System.out.println(sum); // 输出 15
```
其中,`list.stream()` 方法将 List 转换为 Stream,`mapToInt(Integer::intValue)` 方法将 Stream 中的元素转换为 int 类型,最后使用 `sum()` 方法求和。
相关问题
bigdecimal在list.stream求和
您可以使用`BigDecimal`类的`reduce`方法来在`Stream`中求和。以下是一个示例代码:
```java
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<BigDecimal> numbers = Arrays.asList(
new BigDecimal("1.0"),
new BigDecimal("2.0"),
new BigDecimal("3.0")
);
BigDecimal sum = numbers.stream()
.reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println("Sum: " + sum);
}
}
```
在这个例子中,我们创建了一个`BigDecimal`类型的列表`numbers`,然后使用`stream`方法将其转换为流。接下来,我们使用`reduce`方法来将流中的元素相加,初始值为`BigDecimal.ZERO`,累加函数为`BigDecimal::add`。最后,我们打印出求和的结果。
请注意,`BigDecimal`是不可变的,所以每次相加都会创建一个新的`BigDecimal`对象。因此,在对大量元素进行求和时,可能会造成性能问题。如果需要处理大量数据,可以考虑使用`Double`或`Long`类型来代替`BigDecimal`。
List.stream分组求和
List.stream分组求和是一种常见的数据处理操作,它可以将一个List中的元素照某个属性进行分组,并对每个分组中的元素进行求和操作。下面是一个示例代码:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// 创建一个包含多个Person对象的List
List<Person> personList = Arrays.asList(
new Person("Alice", "A", 100),
new Person("Bob", "A", 200),
new Person("Charlie", "B", 300),
new Person("David", "B", 400),
new Person("Eve", "C", 500)
);
// 使用stream进行分组求和
Map<String, Integer> sumByGroup = personList.stream()
.collect(Collectors.groupingBy(Person::getGroup, Collectors.summingInt(Person::getScore)));
// 输出结果
sumByGroup.forEach((group, sum) -> System.out.println(group + ": " + sum));
}
}
class Person {
private String name;
private String group;
private int score;
public Person(String name, String group, int score) {
this.name = name;
this.group = group;
this.score = score;
}
public String getName() {
return name;
}
public String getGroup() {
return group;
}
public int getScore() {
return score;
}
}
```
上述代码中,我们创建了一个包含多个Person对象的List,并使用stream对其进行操作。通过`Collectors.groupingBy`方法,我们可以按照Person对象的group属性进行分组,然后使用`Collectors.summingInt`方法对每个分组中的score属性进行求和。最后,我们将结果存储在一个Map中,并输出每个分组的求和结果。
阅读全文
相关推荐
















