java stream 列表求和
时间: 2023-10-13 15:21:55 浏览: 11
可以使用Java 8的Stream API对列表中的元素求和。可以在列表的stream()方法上调用mapToInt()方法将元素映射为int类型,再调用sum()方法求和。示例代码如下:
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream().mapToInt(Integer::intValue).sum();
System.out.println("Sum of the list elements: " + sum);
```
上面的代码会输出 "Sum of the list elements: 15",它会将numbers列表里的元素求和。
相关问题
java stream分组求和
可以使用Java的Stream API来实现分组求和的操作。假设有一个包含对象的列表,对象中有两个属性:类型和数值。我们想要将列表中的对象按照类型进行分组,并计算每个类型对应的数值总和。下面是一个示例代码:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class GroupingAndSummingExample {
public static void main(String[] args) {
// 创建对象列表
List<DataObject> dataObjects = Arrays.asList(
new DataObject("A", 10),
new DataObject("B", 20),
new DataObject("A", 30),
new DataObject("B", 40),
new DataObject("C", 50)
);
// 使用Stream进行分组求和
Map<String, Integer> sumByType = dataObjects.stream()
.collect(Collectors.groupingBy(DataObject::getType, Collectors.summingInt(DataObject::getValue)));
// 打印结果
sumByType.forEach((type, sum) -> System.out.println(type + ": " + sum));
}
}
class DataObject {
private String type;
private int value;
public DataObject(String type, int value) {
this.type = type;
this.value = value;
}
public String getType() {
return type;
}
public int getValue() {
return value;
}
}
```
运行以上代码,将会输出以下结果:
```
A: 40
B: 60
C: 50
```
代码中,我们使用`Collectors.groupingBy`方法来对数据对象进行分组,按照类型(`DataObject::getType`)进行分组。然后,我们使用`Collectors.summingInt`方法对每个分组进行求和,按照数值属性(`DataObject::getValue`)累加求和。最后,我们将结果打印出来。
java stream 分组求和
你可以使用Java的Stream来实现分组求和。下面是一个示例代码:
```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) {
List<Transaction> transactions = Arrays.asList(
new Transaction("Apple", 100),
new Transaction("Banana", 200),
new Transaction("Apple", 150),
new Transaction("Orange", 300),
new Transaction("Banana", 250)
);
Map<String, Integer> sumByFruit = transactions.stream()
.collect(Collectors.groupingBy(Transaction::getFruit, Collectors.summingInt(Transaction::getAmount)));
System.out.println(sumByFruit);
}
}
class Transaction {
private String fruit;
private int amount;
public Transaction(String fruit, int amount) {
this.fruit = fruit;
this.amount = amount;
}
public String getFruit() {
return fruit;
}
public int getAmount() {
return amount;
}
}
```
在上面的示例中,我们有一个包含交易信息的Transaction类,其中包含水果名称和金额。我们将交易列表进行了分组,并使用Collectors.summingInt方法来对每个分组进行求和。
输出结果将是一个以水果名称为键,对应金额总和为值的Map。在这个例子中,输出结果将是`{Apple=250, Banana=450, Orange=300}`。
希望这个例子可以帮助到你!如有其他问题,请随时提问。
阅读全文