Springboot中如何对一个[{itemid:1,rating:0.9},{itemid:2,rating:0.8},{itemid:3,rating:0.5}]数组中的rating进行排序,并保留前rating值最大的10个其中rating是BigDecimal类型,并输原来的格式的数组
时间: 2023-11-27 08:53:43 浏览: 60
可以使用Java 8的Stream API来对数组中的rating进行排序,并保留前10个最大的值。具体代码如下:
```java
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
// 定义原始数组
BigDecimalRating[] ratings = {
new BigDecimalRating(1, new BigDecimal("0.9")),
new BigDecimalRating(2, new BigDecimal("0.8")),
new BigDecimalRating(3, new BigDecimal("0.5"))
};
// 对数组中的rating进行降序排序
Arrays.sort(ratings, Comparator.comparing(BigDecimalRating::getRating).reversed());
// 取前10个最大的rating值
BigDecimalRating[] top10 = Arrays.stream(ratings)
.limit(10)
.toArray(BigDecimalRating[]::new);
// 输出原来的格式的数组
System.out.println(Arrays.toString(top10));
}
}
class BigDecimalRating {
private int itemId;
private BigDecimal rating;
public BigDecimalRating(int itemId, BigDecimal rating) {
this.itemId = itemId;
this.rating = rating;
}
public int getItemId() {
return itemId;
}
public void setItemId(int itemId) {
this.itemId = itemId;
}
public BigDecimal getRating() {
return rating;
}
public void setRating(BigDecimal rating) {
this.rating = rating;
}
@Override
public String toString() {
return "{itemid:" + itemId + ",rating:" + rating + "}";
}
}
```
输出结果为:
```
[{itemid:1,rating:0.9}, {itemid:2,rating:0.8}, {itemid:3,rating:0.5}]
```
可以看到,输出的结果与原来的格式是一致的,并且按照rating值从大到小排列了。
阅读全文