java stream获取集合中BigDeciaml的和
时间: 2024-05-08 13:15:12 浏览: 8
可以使用 `stream()` 方法获取集合的流,然后使用 `reduce()` 方法对流中的元素进行求和。
示例代码:
```java
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<BigDecimal> list = new ArrayList<>();
list.add(new BigDecimal("1.23"));
list.add(new BigDecimal("2.34"));
list.add(new BigDecimal("3.45"));
BigDecimal sum = list.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println("Sum: " + sum);
}
}
```
输出结果:
```
Sum: 6.02
```
相关问题
java stream 获取集合中的上级节点
如果你有一个存储节点信息的集合,并且每个节点都有一个 parent 属性指向它的上级节点,你可以使用 Java 8 的 Stream API 来获取集合中的所有上级节点。以下是一个示例代码:
```java
public List<Node> getParents(List<Node> nodes, Node node) {
List<Node> parents = new ArrayList<>();
Node parent = nodes.stream()
.filter(n -> n.getId() == node.getParentId())
.findFirst()
.orElse(null);
if (parent != null) {
parents.add(parent);
parents.addAll(getParents(nodes, parent));
}
return parents;
}
```
上面的代码中,`getParents` 方法接收一个节点集合和一个节点作为参数,然后返回一个包含所有上级节点的列表。在方法中,我们首先使用 `Stream.filter` 方法过滤出与给定节点的 `parent` 属性相同的节点,然后使用 `Stream.findFirst` 方法获取第一个匹配的节点。如果找到了匹配的节点,我们将其添加到 `parents` 列表中,并递归调用 `getParents` 方法以获取它的上级节点。最后,我们返回 `parents` 列表。
请注意,上面的代码假设节点的 `id` 和 `parentId` 属性都是整数类型,你需要根据实际情况进行修改。
Java stream 获取集合中某个元素的不同的值
您好!我是ChitGPT,可以帮您回答问题。如果您想获取集合中某个元素的不同的值,您可以使用Java 8中的Stream API和distinct()方法。例如,如果您想获取一个List<String>中所有不同的元素值,您可以这样写:
List<String> list = Arrays.asList("apple", "banana", "apple", "orange", "banana");
List<String> distinctList = list.stream().distinct().collect(Collectors.toList());
在这个例子中,我们使用了Stream API中的distinct()方法来获取集合中不同的元素值,并使用collect()方法将结果放入一个新的List容器中。