利用stream将对象列表中某个属性为某个值的对象放到列表最后
时间: 2023-12-10 20:36:53 浏览: 39
可以使用Java 8中的Stream API来实现这个功能,具体代码如下:
```java
list.stream()
.sorted(Comparator.comparing(obj -> obj.getProperty()))
.collect(Collectors.toList());
```
其中,`list`是要操作的对象列表,`getProperty()`是获取对象某个属性的方法。这段代码会将列表中属性为某个值的对象放到列表最后,其他对象按照属性值的升序排列。
如果要将对象放到列表末尾,可以在排序时将匹配的对象设置为最大值,例如:
```java
list.stream()
.sorted(Comparator.comparing(obj -> obj.getProperty() == someValue ? Integer.MAX_VALUE : obj.getProperty()))
.collect(Collectors.toList());
```
这样,属性为某个值的对象会被放到列表末尾,其他对象按照属性值的升序排列。
相关问题
java 8 stream 对对象列表中某个属性求和怎么写
可以使用Java 8 Stream中的mapToInt和sum方法来实现对对象列表中某个属性求和的功能。例如,假设有一个Student类,其中包含一个score属性,可以使用以下代码来计算一个Student列表中所有学生的score之和:
```java
List<Student> students = ...; // 假设已经初始化了一个学生列表
int totalScore = students.stream()
.mapToInt(Student::getScore) // 将每个学生的score属性映射为一个IntStream
.sum(); // 对IntStream中的所有元素求和
```
其中,`Student::getScore` 是一个方法引用,代表获取每个学生的score属性。使用 `mapToInt` 将每个学生的score属性映射为一个IntStream,再使用 `sum` 对IntStream中的所有元素求和,得到一个总分数。
java 8 stream 对对象列表中某个类型为BigDecimal的属性求和怎么写
和对int类型属性求和类似,对于BigDecimal类型的属性,可以使用Java 8 Stream中的map和reduce方法来实现求和的功能。例如,假设有一个Product类,其中包含一个price属性,可以使用以下代码来计算一个Product列表中所有产品的price之和:
```java
List<Product> products = ...; // 假设已经初始化了一个产品列表
BigDecimal totalAmount = products.stream()
.map(Product::getPrice) // 将每个产品的price属性映射为一个BigDecimal Stream
.reduce(BigDecimal.ZERO, BigDecimal::add); // 对所有BigDecimal元素求和
```
其中,`Product::getPrice` 是一个方法引用,代表获取每个产品的price属性。使用 `map` 将每个产品的price属性映射为一个BigDecimal Stream,再使用 `reduce` 对BigDecimal Stream中的所有元素求和,得到一个总金额。需要注意的是,在reduce方法中要传入一个BigDecimal.ZERO作为初始值,以确保求和结果正确。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)