好的,下面我来举一些例子来说明 Java 8 中的流式计算 API:
1. 过滤(filter):
```
List
List
.filter(name -> name.startsWith("J"))
.collect(Collectors.toList());
System.out.println(result); // 输出 [Jerry, Jim]
```
上面的代码中,通过 stream() 方法获取一个 Stream,然后使用 filter() 方法过滤出以 "J" 开头的字符串,最后使用 collect() 方法将结果收集到一个 List 中。
2. 映射(map):
```
List
List
.map(name -> name.length())
.collect(Collectors.toList());
System.out.println(result); // 输出 [3, 5, 4, 4, 3]
```
上面的代码中,使用 map() 方法将每个字符串映射成它的长度,最后使用 collect() 方法将结果收集到一个 List 中。
3. 排序(sorted):
```
List
List
.sorted()
.collect(Collectors.toList());
System.out.println(result); // 输出 [Jim, Lily, Lucy, Tom, Jerry]
```
上面的代码中,使用 sorted() 方法对字符串进行自然排序,最后使用 collect() 方法将结果收集到一个 List 中。
4. 限制(limit):
```
List
List
.limit(3)
.collect(Collectors.toList());
System.out.println(result); // 输出 [Tom, Jerry, Lucy]
```
上面的代码中,使用 limit() 方法限制结果集的长度为 3,最后使用 collect() 方法将结果收集到一个 List 中。
5. 聚合(reduce):
```
List
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
new Person(1, "Tom"),
new Person(2, "Jerry"),
new Person(3, "Lucy")
);
Map
.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)来简化代码。