java的流式计算

好的,下面我来举一些例子来说明 Java 8 中的流式计算 API:

1. 过滤(filter):

```
List names = Arrays.asList("Tom", "Jerry", "Lucy", "Lily", "Jim");
List result = names.stream()
                          .filter(name -> name.startsWith("J"))
                          .collect(Collectors.toList());
System.out.println(result); // 输出 [Jerry, Jim]
```

上面的代码中,通过 stream() 方法获取一个 Stream,然后使用 filter() 方法过滤出以 "J" 开头的字符串,最后使用 collect() 方法将结果收集到一个 List 中。

2. 映射(map):

```
List names = Arrays.asList("Tom", "Jerry", "Lucy", "Lily", "Jim");
List result = names.stream()
                            .map(name -> name.length())
                            .collect(Collectors.toList());
System.out.println(result); // 输出 [3, 5, 4, 4, 3]
```

上面的代码中,使用 map() 方法将每个字符串映射成它的长度,最后使用 collect() 方法将结果收集到一个 List 中。

3. 排序(sorted):

```
List names = Arrays.asList("Tom", "Jerry", "Lucy", "Lily", "Jim");
List result = names.stream()
                            .sorted()
                            .collect(Collectors.toList());
System.out.println(result); // 输出 [Jim, Lily, Lucy, Tom, Jerry]
```

上面的代码中,使用 sorted() 方法对字符串进行自然排序,最后使用 collect() 方法将结果收集到一个 List 中。

4. 限制(limit):

```
List names = Arrays.asList("Tom", "Jerry", "Lucy", "Lily", "Jim");
List result = names.stream()
                            .limit(3)
                            .collect(Collectors.toList());
System.out.println(result); // 输出 [Tom, Jerry, Lucy]
```

上面的代码中,使用 limit() 方法限制结果集的长度为 3,最后使用 collect() 方法将结果收集到一个 List 中。

5. 聚合(reduce):

```
List numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
                 .reduce(0, (a, b) -> a + b);
System.out.println(sum); // 输出 15
```

上面的代码中,使用 reduce() 方法对整数集合进行求和计算,初始值为 0。

以上是一些 Java 8 中的流式计算 API 的例子,希望能帮助你理解这些操作的用法。

是的,Java 8 中的流式计算 API 还提供了将一个对象转换为某个属性值和对象的 Map 的操作,这个操作可以使用 Collectors.toMap() 方法来实现。下面是一个示例代码:

```
class Person {
    private int id;
    private String name;

    public Person(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }
}

List persons = Arrays.asList(
        new Person(1, "Tom"),
        new Person(2, "Jerry"),
        new Person(3, "Lucy")
);

Map idToNameMap = persons.stream()
        .collect(Collectors.toMap(Person::getId, Person::getName));

System.out.println(idToNameMap); // 输出 {1=Tom, 2=Jerry, 3=Lucy}
```

上面的代码中,将一个 Person 对象转换为一个 Map,其中 key 是 id 属性的值,value 是 name 属性的值。在 toMap() 方法中,第一个参数是 key 的提取函数,第二个参数是 value 的提取函数,可以使用方法引用(Person::getId、Person::getName)来简化代码。

你可能感兴趣的:(spring,boot,java)