java list stream 对象 sum 简书
在Java中,可以使用Stream API处理List对象,例如计算List对象的总和。以下是一个关于使用Stream API计算List对象和的简书:
1. 首先,确保已经导入了所需的库:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
```
2. 创建一个List对象,例如整数列表:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
```
3. 使用Stream API的`mapToInt`方法将List对象转换为IntStream对象:
```java
IntStream integers = numbers.stream().mapToInt(Integer::intValue);
```
4. 使用`sum`方法计算IntStream对象的总和:
```java
int sum = integers.sum();
```
5. 输出结果:
```java
System.out.println("List sum: " + sum);
```
6. 如果是自定义对象,需要确保实现了`equals`和`hashCode`方法,以便Stream能够正确进行对象的比较。例如,假设我们有一个名为`Person`的类,具有`name`和`age`属性:
```java
public class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age && Objects.equals(name, person.name);
    }
    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
```
7. 对于自定义对象,可以使用Stream API计算两个List对象的总和:
```java
List<Person> persons1 = Arrays.asList(new Person("Alice", 30), new Person("Bob", 25));
List<Person> persons2 = Arrays.asList(new Person("Alice", 30), new Person("Charlie", 22));
int sum1 = persons1.stream().mapToInt(Person::getAge).sum();
int sum2 = persons2.stream().mapToInt(Person::getAge).sum();
System.out.println("Persons1 sum: " + sum1);
System.out.println("Persons2 sum: " + sum2);
```
以上示例展示了如何使用Java Stream API计算List对象的总和。在实际应用中,可以根据
需要使用Stream API处理不同的数据结构和操作。
java stream